命名txt输出文件python

时间:2013-10-30 13:38:58

标签: python input text-files output rename

我正在尝试从Python获取.txt输出文件,但是每次运行程序时我都会覆盖我的.txt文件(输出.txt文件总是具有相同的名称)。现在我有了这个命令:

with open("outputHorizontal.txt", 'w') as file:
    for item in I_list:
           file.write("{}\n".format(item))

使用这段代码,我得到一个包含所有I_list数据的txt文件,但如果我多次运行程序,我只能看到最后一个txt文件(其他文件被覆盖并删除)。

我真的很想知道如何自动重命名此输出.txt文件(现在称为'outputHorizo​​ntal.txt'),以便每次运行程序时都有数据。是否有任何方法可以根据用户必须在程序中输入的输入来更改名称?例如,纬度(作为'lat)是程序的输入,并且可以很好地使txt文件名可以根据'lat'自动更改(每次'lat'更改时,txt文件名也会更改)。

并且,使用.txt文件或.csv文件从Python中提取数据的最佳方法是什么?在此先感谢你们。亲切的问候。

4 个答案:

答案 0 :(得分:1)

按照您的建议参数化文件名:

with open("outputHorizontal.{0}.txt".format(lat), 'w') as file:
    for item in I_list:
        file.write("{}\n".format(item))

答案 1 :(得分:0)

要附加到现有文件,打开模式应为'a',而不是'w':

with open("{}.txt".format(filename), 'a') as file:
    for item in I_list:
        file.write("{}\n".format(item))

答案 2 :(得分:0)

我认为最好的选择是模式a+,因为它在documentation中说明:

  

模式'r+''w+''a+'打开文件进行更新(请注意'w +'截断文件)。

所以:

with open("outputHorizontal.txt", 'a+') as file:
    for item in I_list:
        file.write("{0}\n".format(item))

这会将数据附加到文件中。但是,如果您只是希望每次都更改名称,那么:

with open("...{0}.txt".format(your_variable), 'a+'):

答案 3 :(得分:0)

只需参数化文件名:

with open("%s.txt"%lat, 'w') as f:

这样可以正常工作。

如果你想拥有output1.txt, output2.txt, output3.txt,我有一个很好的方法来做到这一点。

i = 0
while i: #keep trying until you get a file that hasn't existed yet
    i+=1
    try:
        with open('output{}.txt'.format(i), 'x'): #this will fail if the file already exists
            #do something
        break
    except PermissionError:
        continue

此脚本将检查第一个文件output1.txt是否已存在,如果存在,它将检查output2.txt是否存在,依此类推,直到找到不存在的文件为止还没有。

希望这有帮助! :)