我有1000个CSV文件,名称为Radius_x
,其中x
代表0,1,2...11,12,13...999
。但当我阅读这些文件并试图分析结果时,我希望按照上面列出的整数顺序阅读。但是代码读起来如下(例如(:....145,146,147,148,149,15,150,150...159,16,160,161,......
等等
我知道,如果我们将CSV文件重命名为Radius_xyz
,其中xyz = 000,001,002,003,....010,011,012.....999
,问题就可以解决。请帮助我如何进行。
要在python中对路径列表进行数字排序,首先找到要打开的所有文件,然后用提取数字的键对其进行可迭代排序。
带pathlib
:
from pathlib import Path
files = list(Path("/tmp/so/").glob("Radius_*.csv")) # Path.glob returns a generator which needs to be put in a list
files.sort(key=lambda p: int(p.stem[7:])) # `Radius_` length is 7
files
包含
[PosixPath('/tmp/so/Radius_1.csv'),
PosixPath('/tmp/so/Radius_2.csv'),
PosixPath('/tmp/so/Radius_3.csv'),
PosixPath('/tmp/so/Radius_4.csv'),
PosixPath('/tmp/so/Radius_5.csv'),
PosixPath('/tmp/so/Radius_6.csv'),
PosixPath('/tmp/so/Radius_7.csv'),
PosixPath('/tmp/so/Radius_8.csv'),
PosixPath('/tmp/so/Radius_9.csv'),
PosixPath('/tmp/so/Radius_10.csv'),
PosixPath('/tmp/so/Radius_11.csv'),
PosixPath('/tmp/so/Radius_12.csv'),
PosixPath('/tmp/so/Radius_13.csv'),
PosixPath('/tmp/so/Radius_14.csv'),
PosixPath('/tmp/so/Radius_15.csv'),
PosixPath('/tmp/so/Radius_16.csv'),
PosixPath('/tmp/so/Radius_17.csv'),
PosixPath('/tmp/so/Radius_18.csv'),
PosixPath('/tmp/so/Radius_19.csv'),
PosixPath('/tmp/so/Radius_20.csv')]
注意files
是一个路径列表,而不是字符串,但大多数处理文件的函数都接受这两种类型。
glob
也可以使用类似的方法,它会给出一个字符串列表,而不是路径。