我想写一个不附加每个迭代的新文件

时间:2014-12-18 15:37:27

标签: python file append

我想为每次迭代创建一个新文件,但我无法这样做。我只能更新相同的旧文件,我该如何解决?

另一个更基本的问题是"" file.write中的函数(""。)? 我试过" w"但它仍然无法运作..

这是我的代码:

 def write_to_file(self,lista): 
    file=open("file.txt","a") 
    file.write("\n")
    file.write("".join(str(lista)))
    file.close()  

3 个答案:

答案 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语句比openclose更安全,更容易,因为只有当您对文件的处理结束时,它才能完成。

每次调用该函数时,都会创建一个新文件。

我添加了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()