我想根據檔案名運行不同的功能
這是我的代碼:
entries = Path(infile)
for file in sorted(entries.glob("*.TXT")):
if file == '*Blk.TXT':
outlier.outlier_Cu_blk(file)
elif file == '*s0*.TXT':
outlier.outlier_Cu_std(file)
else:
outlier.outlier_Cu_sample(file)
但它只是呼叫“else”,即使檔案包含“Blk.TXT”和“s0”。我究竟做錯了什么?
uj5u.com熱心網友回復:
'==' 沒有使用像匹配一樣的正則運算式,您應該re為此目的使用:
import re
blk_txt_rgx = re.compile(r'.*Blk\.TXT')
s0_txt_rgx = re.compile(r'.*s0.*\.TXT')
entries = Path(infile)
for file in sorted(entries.glob("*.TXT")):
if blk_txt_rgx.match(file):
outlier.outlier_Cu_blk(file)
elif s0_txt_rgx.match(file):
outlier.outlier_Cu_std(file)
else:
outlier.outlier_Cu_sample(file)
uj5u.com熱心網友回復:
==不*作為分隔符,如果你想進一步這樣做,你需要考慮使用正則運算式。
entries = Path(infile)
for file in sorted(entries.glob("*.TXT")):
file = str(file)
if file.endswith('Blk.TXT'):
outlier.outlier_Cu_blk(file)
elif file.endswith('.TXT') and 's0' in file:
outlier.outlier_Cu_std(file)
else:
outlier.outlier_Cu_sample(file)
uj5u.com熱心網友回復:
Python 不支持普通字串中的 * 等通配符。可以使用正則運算式來做到這一點。可以表示一個任意字符的通配符是點 ( .)。要多次重復此操作,我們可以添加一個*. 確保添加反斜杠 ( \) 以轉義檔案名中的點。
import re
blk_regex = re.compile(r'.*Blk\.TXT')
slk_regex = re.compile(r'.*s0.*\.TXT')
for file in sorted(entries.glob("*.TXT")):
if blk_regex.match(file):
outlier.outlier_Cu_blk(file)
elif slk_regex.match(file):
outlier.outlier_Cu_std(file)
else:
outlier.outlier_Cu_sample(file)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448422.html
標籤:Python python-3.x 文件 小路
