使用Python转换为CSV的文本文件与使用Excel进行转换不同

我有一个parsing眼动仪输出的大量文件的程序。 原始文件以文本格式显示给我,但我需要一个CSV文件来进行数据分析。

我一直在做的是在Excel中打开文本文件,将其保存为.csv文件,然后通过parsing器运行。 这工作正常,但是很费力,所以我想创build一段代码在我的parsing器的开始处运行:将原始文本文件转换为CSV文件,然后在刚刚创build的parsing器上运行CSV文件。

我试图使用的代码如下,并从这里修改:

txt_file = subjectNum + ".asc" csv_file = "subject_" + subjectNum + ".csv" in_txt = csv.reader(open(txt_file, "r"), delimiter = '\t') out_csv = csv.writer(open(csv_file, 'w')) out_csv.writerows(in_txt) 

这会生成一个文件,但是parsing器却无法像在通过Excel进行转换时所获得的“手动生成”文件那样处理它。 parsing器确实创build了这些文件,但它们是空的。

另外,我的源文件是17.8mb。 当我使用Excel将其转换为CSV时,生成的文件为16mb,包含237,218行。 当我使用上面的代码将文本文件转换为CSV时,生成的文件是17.8mb和236,104行。

这似乎是我在上面的代码中缺less的东西,当我用Excel手动转换时发生。

您需要在写入后closures文件,以确保完全写入磁盘。

另外,你应该总是以二进制模式(Python 2)(或者在newline="" mode(Python 3))打开文件。

 with open(txt_file, "rb") as infile, open(csv_file, 'wb') as outfile: in_txt = csv.reader(infile, delimiter = '\t') out_csv = csv.writer(outfile) out_csv.writerows(in_txt)