Set*_*eth 1 text python-3.x output
我简化了我的问题.
此代码仅将list.txt文件的最后一个文本行后跟一个CR/LF写入newlist.txt文件.怎么会.它将所有条目打印到屏幕上的一行,但只将最后一行写入文件.
这是我关于这个主题的第一篇文章的关键,但我正在努力简化这个问题
f = open("list.txt","r")
for line in f:
print(line)
output = open("newlist.txt",'w', newline="\r\n")
output.write(line)
f.close()
Run Code Online (Sandbox Code Playgroud)
您在每次迭代中重新打开该文件.别!
open()考虑到w你交出的旗帜,那个函数(无论哪种语言)在写入之前肯定会清空文件.您可能希望使用a标志,大多数语言使用它来"追加"到文件:
output = open("newlist.txt",'a', newline="\r\n")
Run Code Online (Sandbox Code Playgroud)
但这仍然意味着您在每次迭代中重新打开文件,这非常慢.它更有意义打开文件一次循环之前.然后你可以限制自己写入迭代内部已经打开的文件.我不知道python,但可能这就是你要找的东西:
f = open("list.txt","r")
o = open("newlist.txt",'w', newline="\r\n")
for line in f:
print(line)
o.write(line)
o.close()
f.close()
Run Code Online (Sandbox Code Playgroud)
@eryksun在下面的评论中建议使用withpython 的构造来获得更优雅和更健壮的解决方案(这是python,对吧?).我冒昧地在这里提出这个建议,因为它显然是有道理的.我希望我做对了:
with open("list.txt") as f, open("newlist.txt", "w", newline="\r\n") as o:
for line in f:
print(line)
o.write(line)
Run Code Online (Sandbox Code Playgroud)
如果 python像@eryksun所说的那样清理,对我来说看起来非常直观和合乎逻辑.
| 归档时间: |
|
| 查看次数: |
11380 次 |
| 最近记录: |