我正在尝试从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文件(现在称为'outputHorizontal.txt'),以便每次运行程序时都有数据。是否有任何方法可以根据用户必须在程序中输入的输入来更改名称?例如,纬度(作为'lat)是程序的输入,并且可以很好地使txt文件名可以根据'lat'自动更改(每次'lat'更改时,txt文件名也会更改)。
并且,使用.txt文件或.csv文件从Python中提取数据的最佳方法是什么?在此先感谢你们。亲切的问候。
答案 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
是否存在,依此类推,直到找到不存在的文件为止还没有。
希望这有帮助! :)