我对Python非常陌生,刚开始学习并尝试通过它来完成任务,希望得到一些帮助(使用Python 3.1)。
我使用“excel”方言的DictWriter写了一个CSV文件。在创建文件后,我注意到文件中有额外的行,并且经过仔细检查,发现每行末尾都是"\r\r\n"而不是"\r\n"。
我可以通过以下两种方式之一解决这个问题:
以二进制模式打开文件而不是文本模式。但问题在于我无论如何都无法让writerow()针对二进制文件工作——我得到了大量的异常。
第二个(更简单)的解决方法只是将所有的"\r\r\n"替换为"\r\n"。
然而,在我的尝试中,我遇到了以下错误:
a. 没有先关闭文件,搜索和替换只会添加更多的"\r\r\n"行。 b. 我已经尝试过先关闭文件,然后以二进制模式重新打开并进行相同的搜索和替换,但我得到了一个错误:
WindowsError: [Error 32] 因为正在被另一个进程使用,所以无法访问该文件
以下是代码:
#code before this writes to the final in text mode
myfile.close()
myfile = open(outputFile, "wb")
for line in fileinput.FileInput(outputFile, inplace=1):
line = line.replace("\r\r\n", "\r\n")
print (line)
myfile.close()
感谢任何人可以提供的帮助!
newline=''
调用.csv
文件的open
(这是使用csv
模块打开文件的唯一正确方式),而且您正在使用 Windows 并使用类似于 Windows 的csv
方言。csv.writer
显式地写入了\r\n
(因为该方言使用\r\n
作为换行符),并且由于未在open
中使用newline=''
禁用行结束转换,因此io.TextIOWrapper
将\n
转换为\r\n
,使其在磁盘上变成了\r\r\n
。 - ShadowRanger