Bash中任何等效的*样式,用于处理不匹配相同模式的多个文件

cc2*_*211 3 python

我正在寻找在当前工作目录中的所有文件上迭代脚本而不迭代脚本(所以任何扩展.py).我当时正在使用它

for fileName in os.listdir('.'):
    if fileName != 'autocorrelation1.py':
        with open(fileName, "r") as input:

        REST OF SCRIPT HERE
Run Code Online (Sandbox Code Playgroud)

当我在文件夹中只有一个脚本autocorrelation.py时,哪个有效,但现在我有一些python脚本,我想知道是否有一个bash风格的等效*例如

for fileName in os.listdir('.'):
    if fileName != *'.py':
        with open(fileName, "r") as input:

        REST OF SCRIPT HERE
Run Code Online (Sandbox Code Playgroud)

我想我很懒,可以用另一行代码来做,但只是想知道是否有人知道更有趣的方式!

Mag*_*off 9

我建议使用fnmatch模块:

for fileName in os.listdir('.'):
    if not fnmatch.fnmatch(fileName, '*.py'):
        print fileName
Run Code Online (Sandbox Code Playgroud)

水珠模块可以帮助您找到匹配的文件,如果这是你想要的:

for fileName in glob.glob('*.py'):
    print fileName
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 6

在这种特殊情况下,最简单的解决方案是

if not file_name.endswith(".py"):
Run Code Online (Sandbox Code Playgroud)

另一种选择是

if not fnmatch.fnmatch(file_name, "*.py"):
Run Code Online (Sandbox Code Playgroud)