动态文件名

1 投票
5 回答
10014 浏览
提问于 2025-04-16 02:47

我正在做一个程序,需要把数据存储到多个 .txt 文件里。我想给这些文件命名,格式是 file"xx",其中的 xx 是数字,比如 file00、file01,一直到 file20。同时,我想把这些文件对应的变量命名为 fxx(f00、f01,等等)。

我该怎么在 Python 中使用循环(或者其他方法)来访问这些文件,这样我就不用重复输入 open("fileXX") 21 次了?

5 个回答

1

可以看看Python的glob模块

这个模块使用的是常见的命令行通配符语法,所以??可以匹配任何两个字符,而*可以匹配任何东西。你可以用f??.txt或者f*.txt,不过前者匹配得更严格,它不会匹配像fact_or_fiction.txt这样的文件名,而后者则可以。

例如:

import glob
for filename in glob.iglob('f??.txt'):
    infile = file(filename)
    # Do stuff...
5

这些名字是正常的。你可以用一个简单的列表推导式来创建文件名的列表。

["f%02d"%x for x in range(1,21)]
1

下面是一个将 t 写入所有文件的例子:

for x in range(22): #Remember that the range function returns integers up to 22-1
    exec "f%02d = open('file%02d.txt', 'w')" % (x, x)

我使用了 exec 语句,但可能还有更好的方法。不过我希望你能明白我的意思。

注意:这个方法会给你一些变量名 fXX,以便后续使用。如果你只是想把 fileXX.txt 赋值给 fXX,那么最后两行其实并不需要。

编辑:我把最后两行删掉了,因为看起来大家对我放这些内容不太满意。对下滑票的解释总是很有帮助。

撰写回答