将命令应用于python中的文件列表



我遇到了一个棘手的问题。我需要将一个名为xRITDecompress的特定命令应用于扩展名为-C_的文件列表,我应该使用Python来执行此操作。

不幸的是,这个命令不能使用通配符,我不能这样做:

os.system("xRITDecompress *-C_")
原则上,我可以编写一个带有for循环的辅助bash脚本,并在我的python程序中调用它。但是,我不希望依赖于辅助文件…

在python程序中这样做的最好方法是什么?

您可以使用glob.glob()获取您想要运行命令的文件列表,然后对于该列表中的每个文件,运行命令-

import glob
for f in glob.glob('*-C_'):
    os.system('xRITDecompress {}'.format(f))

From documentation -

glob模块根据Unix shell使用的规则查找匹配指定模式的所有路径名。

如果您希望通过_(下划线)匹配单个字符,则应该使用- ?,如-

glob.glob('*-C?')

请注意,glob只会在当前目录中搜索,但根据你想要的原始试验,似乎这可能是你想要的。


你可能还想看看subprocess模块,它是一个更强大的模块,用于运行命令(生成进程)。例子——

import subprocess
import glob
for f in glob.glob('*-C_'):
    subprocess.call(['xRITDecompress',f])

您可以使用glob.globglob.iglob来获取与给定模式匹配的文件:

import glob
files = glob.iglob('*-C_')
for f in files:
    os.system("xRITDecompress %s" % f)

glob.glob搜索,os.system执行

import os
from glob import glob
for file in glob('*-C_'):
    os.system("xRITDecompress %s" % file)

我希望它能满足你的问题

最新更新