使用 python 中的名称匹配模式遍历文件夹中的特定文件
iterating through specific files in folder with name matching pattern in python
我有一个文件夹,里面有很多不同名称的 csv 文件。
我只想处理名称仅由数字组成的文件,
虽然我没有文件标题中数字范围的信息。
例如,我有
['123.csv', 'not.csv', '75839.csv', '2.csv', 'bad.csv', '23bad8.csv']
我只想与 ['123.csv', '75839.csv', '2.csv']
一起工作
我尝试了以下代码:
for f in file_list:
if f.startwith('1' or '2' or '3' ..... or '9'):
# do something
但是如果文件名以数字开头但后面仍然包含字母或其他符号,这不是问题。
你可以这样做:
file_list = ["123.csv", "not.csv", "75839.csv", "2.csv", "bad.csv", "23bad8.csv"]
for f in file_list:
name, ext = f.rsplit(".", 1) # split at the rightmost dot
if name.isnumeric():
print(f)
输出是
123.csv
75839.csv
2.csv
您可以使用 Regex
执行以下操作:
import re
lst_of_files = ['temo1.csv', '12321.csv', '123123.csv', 'fdao123.csv', '12312asdv.csv', '123otk123.csv', '123.txt']
pattern = re.compile('^[0-9]+.csv')
newlst = [re.findall(pattern, filename) for filename in lst_of_files if len(re.findall(pattern, filename)) > 0]
print(newlst)
方法之一:
import re
lst_of_files = ['temo1.csv', '12321.csv', '123123.csv', 'fdao123.csv', '12312asdv.csv', '123otk123.csv', '123.txt', '876.csv']
for f in lst_of_files:
if re.search(r'^[0-9]+.csv', f):
print (f)
输出:
12321.csv
123123.csv
876.csv
我有一个文件夹,里面有很多不同名称的 csv 文件。 我只想处理名称仅由数字组成的文件, 虽然我没有文件标题中数字范围的信息。
例如,我有
['123.csv', 'not.csv', '75839.csv', '2.csv', 'bad.csv', '23bad8.csv']
我只想与 ['123.csv', '75839.csv', '2.csv']
我尝试了以下代码:
for f in file_list:
if f.startwith('1' or '2' or '3' ..... or '9'):
# do something
但是如果文件名以数字开头但后面仍然包含字母或其他符号,这不是问题。
你可以这样做:
file_list = ["123.csv", "not.csv", "75839.csv", "2.csv", "bad.csv", "23bad8.csv"]
for f in file_list:
name, ext = f.rsplit(".", 1) # split at the rightmost dot
if name.isnumeric():
print(f)
输出是
123.csv
75839.csv
2.csv
您可以使用 Regex
执行以下操作:
import re
lst_of_files = ['temo1.csv', '12321.csv', '123123.csv', 'fdao123.csv', '12312asdv.csv', '123otk123.csv', '123.txt']
pattern = re.compile('^[0-9]+.csv')
newlst = [re.findall(pattern, filename) for filename in lst_of_files if len(re.findall(pattern, filename)) > 0]
print(newlst)
方法之一:
import re
lst_of_files = ['temo1.csv', '12321.csv', '123123.csv', 'fdao123.csv', '12312asdv.csv', '123otk123.csv', '123.txt', '876.csv']
for f in lst_of_files:
if re.search(r'^[0-9]+.csv', f):
print (f)
输出:
12321.csv
123123.csv
876.csv