动态文件名
我正在做一个程序,需要把数据存储到多个 .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
,那么最后两行其实并不需要。
编辑:我把最后两行删掉了,因为看起来大家对我放这些内容不太满意。对下滑票的解释总是很有帮助。