lst = ['hello world', 'hi I am Josh']
我想写两个文件,一个包含lst [0]和另一个lst [1]。 这样,它不起作用,因为文件被覆盖。写一个文件,而不覆盖python?
for wd in lst:
with open('hey.txt', 'wb') as f:
f.write(wd)
我该如何修复该代码?
lst = ['hello world', 'hi I am Josh']
我想写两个文件,一个包含lst [0]和另一个lst [1]。 这样,它不起作用,因为文件被覆盖。写一个文件,而不覆盖python?
for wd in lst:
with open('hey.txt', 'wb') as f:
f.write(wd)
我该如何修复该代码?
您需要指定不同的文件名:
在hey1.txt这将输出的“Hello World”,在hey0.txt和“你好,我叫乔希”
您可以替换事件的:
open('hey%s.txt' % index
部分具有:
open('hey%s.txt' % (index if index else '')
这样你就会有“hey.txt”和“hey1.txt”(不添加索引,如果它等于0)
非常非常有用!我不知道“%”方法,它是如何工作的?为什么我们使用%s?非常感谢你! – user3156806
它用您传递给它的参数替换字符串的一部分。 iirc,%s的意思是'用它作为一个字符串'(你可以用这个语法来设置一些数字格式)。这就好像我写了'hey'+ str(index)+'.txt'。这里有更多解释:http://docs.python.org/2/library/stdtypes.html#string-formatting – Vincent
你可以切换你的循环顺序:
with open('hey.txt', 'wb') as f:
for wd in lst:
f.write(wd)
或者你可以切换到 “追加” 模式:
for wd in lst:
with open('hey.txt', 'ab') as f:
f.write(wd)
或者它写在一气呵成:
with open('hey.txt', 'wb') as f:
f.write("\n".join(lst))
或写信到两个不同的文件:
for j, wd in enumerate(lst):
with open('hey_%i.txt' % j, 'wb') as f:
f.write(wd)
我在写回答时忘记了'枚举'。我发现它比我声明一个索引变量更清洁:) – Vincent
为什么你能有具有相同名称的两个不同的文件在同一地点?想想你想在这里做什么.. – turbo