在python中循环文件?

在python中循环文件?,python,Python,我有很多文件,我使用glob.glob对它们进行排序以进行绘图。我的文件按编号排序:从file.00000到file.99999 我使用: filenames = sorted(glob.glob('path/file.*')) this_next = filenames for i, fname1 in enumerate(this_next): … 现在,我想绘制每90个文件 当然,glob和sorted返回列表,因此为了每90获得一个元素,您可以使用: from glob i

我有很多文件,我使用glob.glob对它们进行排序以进行绘图。我的文件按编号排序:从file.00000到file.99999

我使用:

filenames = sorted(glob.glob('path/file.*'))
this_next = filenames 

for i, fname1 in enumerate(this_next):
    …

现在,我想绘制每90个文件

当然,
glob
sorted
返回列表,因此为了每
90
获得一个元素,您可以使用:

from glob import glob

for file in sorted(glob('path/file.*'))[::90]:
    ...
如果您确信glob返回排序文件名,则使用生成器是一种更节省内存的解决方案:

from glob import iglob
from itertools import islice

for file in islice(iglob('path/file.*'), 0, None, 90):
    ...
但如果您知道模式是statis,那么最有效的方法肯定是生成文件名:

for file in ('file.%5d' % i for i in xrange(0, 99999, 90)):
    ...

对复制操作感到困惑-为什么您既需要
文件名
又需要
此文件名
?枚举是一种非破坏性操作。你是否也在一个索引号之后(因此你会得到
(1,'file.00000')
,然后是
(91,'file.00090')
,等等)?@Jonathan Leffler是的,我的文件是例如file1_0.00001,file_20.00001;你的问题是“
file.00000
file.99999
”;您的注释为文件名提供了不同的结构(
file1\u 0.00001
file20.00001
)。这让那些试图帮助你的人感到困惑。那么,在您的枚举子句中,
i
fname1
中的结果是什么?很抱歉造成混淆。实际上我应该说我的文件是(文件0.00001,…,文件0.9999和文件20.0001,…,文件20.9999)。在我的第一个脚本中,我必须从两个目录中减去文件,所以我使用了izip。我想从那时起我就离开了。它可能不需要保留这两个选项,因此,它给了我第一个选项的语法错误。对于第二个问题,我应该使用islice(iglob())而不是sorted(glob.glob())吗?第一个问题对我有效,您会得到哪个错误?第二种方法仅在您确定系统返回的数据已排序时有效。filenames=sorted(glob.glob('/path/*.py_0.*'))[::90]:^SyntaxError:无效syntax@user3527941删除