写/读文件时是否有正确的顺序?这就是我通常做的事情:
with open(path + 'write_file.txt', 'wb') as txtout:
with open(path + 'read_file.txt', 'rb') as txtin:
for line in txtin:
txtout.writelines(line)
有没有理由先打开输入文件?而不是先打开输出文件?
答案 0 :(得分:3)
1)首先打开输入文件,然后打开输出文件。这样,如果输入文件不存在,您可以在不首先创建(现在无用的)输出文件的情况下报告该错误。
2)迭代输入文件(正如您所做),而不是调用file.read()
或file.readlines()
。调用其中一个函数可以使用基本上无限量的内存。
3)在您提供的特定情况下,请使用shutils.copyfileobj
或shutils.copyfile
。
答案 1 :(得分:0)
您可以执行以下任一操作:
with open("file_write", 'w') as f1, open("file_read") as f2:
# bla bla bla
或者这个:
with open("file_read") as f1, open("file_write", 'w') as f2:
没有任何区别。当然,如果你的输入文件确实存在的话。随着' w' flag,如果文件不存在,将创建/覆盖该文件。但read
操作的文件对象将返回为" False"即不存在。事实上,只要您想访问不存在的读取文件,它就会生成错误。
答案 2 :(得分:0)
我建议先阅读该文件。如果文件不存在并且写入操作不会开始,则会出错。