Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3枚举如何选择其项的顺序?_Python_Python 3.x_Enumerate - Fatal编程技术网

Python3枚举如何选择其项的顺序?

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 =

我有一个包含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 = 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;-)被改进的。谢谢你的指点。也谢谢你澄清我找错地方了。这真的很有帮助!非常感谢你!我专注于错误的代码片段。