[英]listing csv files using python re.match
我在python中創建了一個小代碼來列出當前目錄中的csv文件:
>>> for i in range(len(os.listdir())):
... isMatch = re.search(r'\.csv$', os.listdir()[i])
... if (isMatch):
... print(os.listdir()[i])
...
HR_data.csv
HR_data2.csv
HR_data_WEKA.csv
WholesaleCustomersData.csv
>>>
有沒有更優雅,更短的方法來執行此操作,例如使用lambda表達式? 非常感謝。/
您不需要正則表達式,並且glob
有開銷。 只需使用內置的str.endswith
函數:
for filename in os.listdir():
if filename.endswith('.csv'):
print(filename)
同樣,直接遍歷列表中的元素比遍歷索引然后引用列表更有效。 尤其是考慮到這一點時,每次要訪問ith
文件時,都會一直調用os.listdir()
,這非常浪費。
這是filter
的一個優雅替代品:
for csv_files in filter(lambda x: x.endswith('.csv'), os.listdir()):
print(csv_files)
適用於python2.x和3.x。
from glob import glob
for f in glob('*.csv'):
print(f)
您可以嘗試使用Python的glob模塊,而不是使用正則表達式:
import glob
files = glob.glob('*.csv')
for f in files:
print(f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.