簡體   English   中英

根據名稱修改Python中CSV文件的讀取順序

[英]Modifying the order of reading CSV Files in Python according to the name

我有 1000 個名為Radius_x的 CSV 文件,其中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完成類似的方法,這將提供字符串列表而不是路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM