我有一些txt文件,其名称具有以下模式:
arc.1.txt, arc.2.txt,...,arc.100.txt,..., arc.500.txt,...,arc.838.txt
我知道我们可以使用for loop
编写一个程序来逐个打开文件,如果我们现在是文件的总数。我想知道是否可以使用While loop
而不计算打开它们的数字文件?
答案 0 :(得分:4)
4kB
答案 1 :(得分:3)
绝对可以使用while循环,假设文件按顺序编号:
i = 0
while True:
i += 1
filename = 'arc.%d.txt' % i
try:
with open(filename, 'r') as file_handle:
...
except IOError:
break
虽然这对所有的嵌套都变得非常难看。你可能最好使用像glob.glob
这样的文件名列表来获取文件名。
from glob import glob
filenames = glob('arc.*.txt')
for filename in filenames:
with open(filename) as file_handle:
...
有一些与第二种方法相关的竞争条件 - 如果文件以某种方式在glob
找到它之间以及实际上是时候处理文件时被删除,那么你的程序可能会有糟糕的一天。 / p>
答案 2 :(得分:0)
如果将它们全部添加到列表中然后逐个删除它们并将while条件设置为while(列表名称)> 0:然后打开下一个文件