运行 文件名后的函数

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)