h4r*_*5h4 20 python python-2.7
text_file = open("new.txt", "r")
lines = text_file.readlines()
for line in lines:
var1, var2 = line.split(",");
myfile = open('xyz.txt', 'w')
myfile.writelines(var1)
myfile.close()
text_file.close()
Run Code Online (Sandbox Code Playgroud)
我在new.txt中有10行文字,如Adam:8154 George:5234等等.现在我想要一个只包含名称的文本文件.xyz.txt必须包含Adam George等.现在上面的代码只留下了第10个名字.
如何在一个文本文件中包含所有10个名称.
pyf*_*unc 33
那是因为你在for循环中打开,写入和关闭文件10次
myfile = open('xyz.txt', 'w')
myfile.writelines(var1)
myfile.close()
Run Code Online (Sandbox Code Playgroud)
您应该在外面打开和关闭文件以进行循环.
myfile = open('xyz.txt', 'w')
for line in lines:
var1, var2 = line.split(",");
myfile.write("%s\n" % var1)
myfile.close()
text_file.close()
Run Code Online (Sandbox Code Playgroud)
您还应该注意使用write而不是writelines.
writelines 将行列表写入您的文件.
此外,你应该看看这里使用with声明的人发布的答案.这是在Python中执行文件读/写操作的优雅方式
Lev*_*von 17
主要问题是你在循环中反复打开/关闭文件.
试试这种方法:
with open('new.txt') as text_file, open('xyz.txt', 'w') as myfile:
for line in text_file:
var1, var2 = line.split(",");
myfile.write(var1+'\n')
Run Code Online (Sandbox Code Playgroud)
我们一次打开这两个文件,因为我们正在使用with它们将在完成后自动关闭(或发生异常).以前,您的输出文件在循环内重复打开.
我们也在逐行处理文件,而不是一次将所有文件读入内存(当处理非常大的文件时,这可能是一个问题).
请注意,write()不追加换行符('\n'),所以你必须自己做,如果你需要它(我换成你writelines()与write()你正在编写一个单一的项目,而不是项目的列表).
打开文件进行r读取时,它'r'是可选的,因为它是默认模式.
Joh*_*ooy 10
最好使用上下文管理器自动关闭文件
with open("new.txt", "r"), open('xyz.txt', 'w') as textfile, myfile:
for line in textfile:
var1, var2 = line.split(",");
myfile.writelines(var1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84053 次 |
| 最近记录: |