在不使用python覆盖的情况下编写文件?

在不使用python覆盖的情况下编写文件?,python,list,text,overwrite,Python,List,Text,Overwrite,我想写两个文件,一个包含lst[0],另一个包含lst[1]。 这样,它就不起作用了,因为文件被覆盖了 lst = ['hello world', 'hi I am Josh'] 如何修复该代码?您需要指定不同的文件名: for wd in lst: with open('hey.txt', 'wb') as f: f.write(wd) 这将在hey0.txt中输出hello world,在hey1.txt中输出hi I'm Josh 您可以替换以下事件: lst = [

我想写两个文件,一个包含lst[0],另一个包含lst[1]。 这样,它就不起作用了,因为文件被覆盖了

lst = ['hello world', 'hi I am Josh']

如何修复该代码?

您需要指定不同的文件名:

for wd in lst:
   with open('hey.txt', 'wb') as f:
      f.write(wd)
这将在hey0.txt中输出hello world,在hey1.txt中输出hi I'm Josh

您可以替换以下事件:

lst = ['hello world', 'hi I am Josh']
index = 0

for wd in lst:
   with open('hey%s.txt' % index, 'wb') as f:
      f.write(wd)
      index += 1
放弃:

open('hey%s.txt' % index

通过这种方式,您将得到hey.txt和hey1.txt。如果它等于0,则不会附加索引。您可以切换循环的顺序:

open('hey%s.txt' % (index if index else '')
或者您可以切换到附加模式:

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))

为什么在同一位置可以有两个同名的不同文件?想想你在这里要做什么…非常非常有用!!我不知道%方法,它是如何工作的?为什么我们使用%s?非常感谢你!它用传递给它的参数替换字符串的一部分。iirc,%s表示“将其用作字符串”,您可以使用此语法设置一些数字格式。就像我写了“嘿”+strindex+.txt”。这里还有一些解释:我在写答案时忘记了“枚举”。我发现它比我那样声明索引变量更干净:
for j, wd in enumerate(lst):
    with open('hey_%i.txt' % j, 'wb') as f:
        f.write(wd)