如何使用 glob.glob(path) 以自然排序顺序遍历文件夹中的文件?
How can one iterate through files in folder in natural sort order using glob.glob(path)?
我目前正在尝试做一些非常基本的事情:计算 .csv 文件中两个单元格的总和并将其输出到新的 DataFrame 中。然后,我对该 .csv 文件中的多行和文件夹中的多个文件重复此操作。毕竟,我将 DataFrame 输出到 .xlsx 文件。代码主体如下:
for fname in glob.glob(path):
print(fname)
processed = []
df = pd.read_csv(fname)
for index, row in df.iterrows():
processed.append(row['Rejected'] + row['Sorted'])
heatMap[str(counter)] = processed
counter += 1
newfname = 'Output.xlsx'
heatMap.to_excel(newfname)
但是,当我查看新创建的 DataFrame 时,列乱序了。检查控制台,我可以看到文件是按字母数字顺序迭代的。
Console output
我想知道如何调整我的方法,以便我可以按自然排序顺序(1、2、3、4、5 等)遍历文件,这样我就不必更改每个文件的名称。
谢谢!
for fname in sorted(glob.glob(path)):
...
这使得 glob 迭代成为一个列表,因此我们可以使用 python sorted
关键字对其进行排序。然后您可以按字母顺序遍历它。
对于自然排序,有一个 natsort
包。
from natsort import natsorted
for fname in natsorted(glob.glob(path)):
...
我目前正在尝试做一些非常基本的事情:计算 .csv 文件中两个单元格的总和并将其输出到新的 DataFrame 中。然后,我对该 .csv 文件中的多行和文件夹中的多个文件重复此操作。毕竟,我将 DataFrame 输出到 .xlsx 文件。代码主体如下:
for fname in glob.glob(path):
print(fname)
processed = []
df = pd.read_csv(fname)
for index, row in df.iterrows():
processed.append(row['Rejected'] + row['Sorted'])
heatMap[str(counter)] = processed
counter += 1
newfname = 'Output.xlsx' heatMap.to_excel(newfname)
但是,当我查看新创建的 DataFrame 时,列乱序了。检查控制台,我可以看到文件是按字母数字顺序迭代的。
Console output
我想知道如何调整我的方法,以便我可以按自然排序顺序(1、2、3、4、5 等)遍历文件,这样我就不必更改每个文件的名称。
谢谢!
for fname in sorted(glob.glob(path)):
...
这使得 glob 迭代成为一个列表,因此我们可以使用 python sorted
关键字对其进行排序。然后您可以按字母顺序遍历它。
对于自然排序,有一个 natsort
包。
from natsort import natsorted
for fname in natsorted(glob.glob(path)):
...