Python3枚举如何选择其项的顺序?
我有一个包含1199个CSV文件的文件夹。这些文件的格式都是“BCx_mmyyPPO.csv”,其中Python3枚举如何选择其项的顺序?,python,python-3.x,enumerate,Python,Python 3.x,Enumerate,我有一个包含1199个CSV文件的文件夹。这些文件的格式都是“BCx_mmyyPPO.csv”,其中x.isin([6,51,55,56,57,60,200,240,269,316,340,415])和mmyy是两位数的月份,后跟两位数的年份 文件夹的一个片段如下所示: 我编写了以下Python 3代码,将所有1199个文件放入一个大型CSV文件中: import glob import os import shutil path = r'path/to/files' allFiles =
x.isin([6,51,55,56,57,60,200,240,269,316,340,415])
和mmyy
是两位数的月份,后跟两位数的年份
文件夹的一个片段如下所示:
我编写了以下Python 3代码,将所有1199个文件放入一个大型CSV文件中:
import glob
import os
import shutil
path = r'path/to/files'
allFiles = glob.glob(path + '/*.csv')
with open('PPO.csv', 'wb') as outfile:
for i, fname in enumerate(allFiles):
with open(fname, 'rb') as infile:
if i != 0:
infile.readline()
shutil.copyfileobj(infile, outfile)
打印步骤在功能上是不必要的,但却是我试图弄明白的内容。enumerate()
使用什么逻辑来选择项目的顺序。我不明白它如何/为什么选择“BC56_0608PPO.csv”作为元素0?这似乎没有什么押韵或理由,但这是有问题的。我需要第一个文件是“BCx_mm16PPO.csv”或“BCx_mm17PPO.csv”中的任何一个
我找不到其他有这个问题的人。我可能看得不对。感谢您的帮助。Enumerate不会更改iterable的顺序,它只会为每个项目提供一个索引。
glob.glob
的顺序取决于os.listdir
,其顺序为
您可以使用排序后的按字母顺序对其排序
:
sorted(glob.glob(path + "/*.csv"))
。。。或用于按大小或上次修改时间排序:
sorted(glob.glob(path + "/*.csv"), key=os.path.getmtime)
sorted(glob.glob(path + "/*.csv"), key=os.path.getsize)
它与
枚举
无关-它与全局
返回匹配文件的顺序有关。。。另外-请不要以图片形式发布代码-将其复制并粘贴为代码块,以便其他人可以阅读您的问题。请按照jon的要求修改您的问题。完成后,您将解锁向下投票的锁。如果您这样做,如果调整改善了您的问题,该人可以重新考虑取消否决票。移至编辑,分类结束审核。欢迎并享受SO;-)被改进的。谢谢你的指点。也谢谢你澄清我找错地方了。这真的很有帮助!非常感谢你!我专注于错误的代码片段。