所以我正在开发一个程序,我将数据存储到多个.txt文件中。我想要使用的命名约定是文件“xx”,其中X是数字,所以file00,file01,...一直到file20,我希望分配给它们的变量是fxx(f00,f01 ,. ..)。
如何使用for循环(或其他方法)在Python中访问这些文件,因此我不必输入open("fileXX")
21次?
答案 0 :(得分:5)
名字是正规的。您可以使用简单的列表推导创建文件名列表。
["f%02d"%x for x in range(1,21)]
答案 1 :(得分:1)
查看python的glob module。
它使用通常的shell通配符语法,因此??
将匹配任意两个字符,而*
将匹配任何内容。您可以使用f??.txt
或f*.txt
,但前者是更严格的匹配,而后者则不匹配fact_or_fiction.txt
之类的匹配。
E.g:
import glob
for filename in glob.iglob('f??.txt'):
infile = file(filename)
# Do stuff...
答案 2 :(得分: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
,则根本不需要。
编辑:删除了最后两行,因为似乎人们对我把它们放在那里感到不满意。 对downvotes的解释总是很好。
答案 3 :(得分:1)
我认为关键是OP想要以编程方式注册变量:
for i in range( 20 ):
locals()[ "f%02d" % i ] = open( "file%02d.txt" % i )
然后例如
print( f01 )
...
答案 4 :(得分:0)
files = [open("file%02d", "w") for x in xrange(0, 20+1)]
# now use files[0] to files[20], or loop
# example: write number to each file
for n, f in enumerate(files):
files.write("%d\n" % n)
# reopen for next example
files = [open("file%02d", "r") for x in xrange(0, 20+1)]
# example: print first line of each file
for n, f in enumerate(files):
print "%d: %s" % (n, f.readline())