【发布时间】:2017-03-01 04:53:43
【问题描述】:
请不要因为我的菜鸟问题而斩首我。我在 stackoverflow 上查找了许多关于此主题的其他问题,但没有找到按预期工作的解决方案。
问题: 我有一个相当大的 txt 文件(大约 5 MB),我想通过 readlines() 或任何其他内置的字符串处理函数将其复制到一个新文件中。对于较小的文件,以下代码确实有效(此处仅示意性编码):
f = open('C:/.../old.txt', 'r');
n = open('C:/.../new.txt', 'w');
for line in f:
print(line, file=n);
但是,正如我在这里 (UnicodeDecodeError: 'charmap' codec can't encode character X at position Y: character maps to undefined) 发现的那样,Windows 的内部限制禁止它处理更大的文件。到目前为止,我想出的唯一解决方案如下:
f = open('C:/.../old.txt', 'r', encoding='utf8', errors='ignore');
n = open('C:/.../new.txt', 'a');
for line in f:
print(line, file=sys.stderr) and append(line, file='C:/.../new.txt');
f.close();
n.close();
但这不起作用。我确实得到了一个 new.txt 文件,但它是空的。那么,如何遍历一个长的 txt 文件并将每一行写入一个新的 txt 文件?有没有办法读取 sys.stderr 作为新文件的源(我实际上不知道这个 sys.stderr 是什么)? 我知道这是一个菜鸟问题,但我不知道在哪里寻找答案了。
提前致谢!
【问题讨论】:
-
print(line, file=sys.stderr) and append(line, file='C:/.../new.txt')该语句的第二部分永远不会被执行,因为print()不会返回任何被解释为None或上下文False的内容。
标签: python