运行 文件名后的函数
run function after filename
我想根据文件名运行不同的功能
这是我的代码:
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”也是如此。我做错了什么?
'=='没有像匹配一样使用正则表达式,你应该使用 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)
==
不接受 *
作为分隔符,如果你想进一步这样做,你需要考虑使用正则表达式。
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)
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)
我想根据文件名运行不同的功能
这是我的代码:
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”也是如此。我做错了什么?
'=='没有像匹配一样使用正则表达式,你应该使用 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)
==
不接受 *
作为分隔符,如果你想进一步这样做,你需要考虑使用正则表达式。
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)
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)