3

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

我一直在做的是在 Excel 中打开文本文件,将其保存为 .csv 文件,然后通过我的解析器运行它。这很好,但是很费力,所以我想创建一段代码在我的解析器的开头运行:它获取原始文本文件,将其转换为 CSV 文件,然后在刚刚制作的文件上运行解析器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)

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

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

当我使用 Excel 手动转换时,似乎我在上面的代码中遗漏了一些东西。

4

1 回答 1

4

您需要在写入后关闭文件以确保它已完全写入磁盘。

newline=""此外,您应该始终以二进制模式(Python 2)(或模式(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)
于 2013-09-30T15:09:31.173 回答