1

假设我有一个包含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一次。你说什么?

4

3 回答 3

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是不合理的。

于 2013-03-20T13:16:08.850 回答
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()

这种方法就像一个魅力!

于 2013-03-20T13:23:26.303 回答
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 首先给出了正确的解决方案:这只是一个建议;)可能存在一种更优雅的方式来实现这个功能。如果有人知道,请告诉我们。

于 2013-03-20T13:38:55.100 回答