0

我正在尝试从 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

4 回答 4

1

像您建议的那样参数化文件名:

with open("outputHorizontal.{0}.txt".format(lat), 'w') as file:
    for item in I_list:
        file.write("{}\n".format(item))
于 2013-10-30T13:48:53.687 回答
0

我相信最好的选择是模式a+,正如它在文档中所述:

Modes '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+'):
于 2013-10-30T13:48:46.770 回答
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存在,依此类推,直到找到一个尚不存在的文件。

希望这可以帮助!:)

于 2013-10-30T13:49:26.350 回答
0

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

with open("{}.txt".format(filename), 'a') as file:
    for item in I_list:
        file.write("{}\n".format(item))
于 2013-10-30T13:41:06.997 回答