我想为每次迭代创建一个新文件,但我无法这样做。我只能更新相同的旧文件,我该如何解决?
另一个更基本的问题是"" file.write中的函数(""。)? 我试过" w"但它仍然无法运作..
这是我的代码:
def write_to_file(self,lista):
file=open("file.txt","a")
file.write("\n")
file.write("".join(str(lista)))
file.close()
答案 0 :(得分:2)
打开(路径,“a”)中的“a”表示追加。如果要打开新文件,请使用“w”。这也会覆盖任何具有此名称的旧文件。
如果您想坚持使用“a”,您还可以提供文件的路径,并防止以后覆盖其他文件。但是你必须选择一个不同的名字。
def write_to_file(path, lista):
f = open(path,"a")
f.write("something")
f.close()
至于加入:
“x”.join([“a”,“b”,“c”])导致“axbxc”
它使用“x”(在您的情况下为空字符串“”)将列表连接为每个元素之间的分隔符。
答案 1 :(得分:1)
我建议这样做:
def write_to_file(self, lista, filename):
with open(filename, 'w+') as file: # filename should be a String here
file.write('\n')
file.write(''.join(str(lista)))
使用with
语句比open
和close
更安全,更容易,因为只有当您对文件的处理结束时,它才能完成。
每次调用该函数时,都会创建一个新文件。
我添加了filename
参数,因为如果您在语句中留下'file.txt'
字符串,每次调用该函数时都会覆盖它,我猜这不是您想要的...
修改强>
阅读你的评论,我开始理解你的问题,我猜你想在你的文件中写一个列表列表,这是你可以做的:
def write_to_file(self, main_list, filename):
with open(filename, 'w+') as file:
for lista in main_list:
file.write('\n')
file.write(''.join(str(lista)))
这将创建一个新文件,遍历您的列表列表并从文件中的主列表中写入每个列表。
答案 2 :(得分:0)
这样做:
file=open("file.txt","w")
def write_to_file(self,lista):
file.write("\n")
file.write("".join(str(lista)))
file.close()
它工作正常:
>>> file = open('ll.txt','w')
>>> def f(s):
... file.write(s)
...
>>> f("hello")
>>> file.close()