假设我有一个文件(比如file1.txt
),数据大约为3mb或更多。如果我想将这些数据写入第二个文件(比如file2.txt
),下列哪种方法会更好?
使用的语言:Python 2.7.3
方法1 :
file1_handler = file("file1.txt", 'r')
for lines in file1_handler:
line = lines.strip()
# Perform some operation
file2_handler = file("file2.txt", 'a')
file2_handler.write(line)
file2_handler.write('\r\n')
file2_handler.close()
file1_handler.close()
方法2 :
file1_handler = file("file1.txt", 'r')
file2_handler = file("file2.txt", 'a')
for lines in file1_handler:
line = lines.strip()
# Perform some operation
file2_handler.write(line)
file2_handler.write('\r\n')
file2_handler.close()
file1_handler.close()
我认为方法二会更好,因为你只需要打开和关闭file2.txt
一次。你怎么说?
答案 0 :(得分:6)
使用with
,它会自动为您关闭文件:
with open("file1.txt", 'r') as in_file, open("file2.txt", 'a') as out_file:
for lines in in_file:
line = lines.strip()
# Perform some operation
out_file.write(line)
out_file.write('\r\n')
使用open
代替file
,不推荐使用file
。
当然,在file1的每一行上打开file2都是不合理的。
答案 1 :(得分:0)
我最近做了类似的事情(如果我理解你的话)。怎么样:
file = open('file1.txt', 'r')
file2 = open('file2.txt', 'wt')
for line in file:
newLine = line.strip()
# You can do your operation here on newLine
file2.write(newLine)
file2.write('\r\n')
file.close()
file2.close()
这种做法就像一个魅力!
答案 2 :(得分:0)
我的解决方案(源自Pavel Anossov +缓冲):
dim = 1000
buffer = []
with open("file1.txt", 'r') as in_file, open("file2.txt", 'a') as out_file:
for i, lines in enumerate(in_file):
line = lines.strip()
# Perform some operation
buffer.append(line)
if i%dim == dim-1:
for bline in buffer:
out_file.write(bline)
out_file.write('\r\n')
buffer = []
Pavel Anossov首先给出了正确的解决方案:这只是一个建议;) 可能它存在一种更优雅的方式来实现这个功能。如果有人知道,请告诉我们。