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

时间:2015-07-30 08:54:54

标签: python command call

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

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

os.system("xRITDecompress *-C_")

原则上,我可以编写一个带有for周期的辅助bash脚本,并在我的python程序中调用它。但是,我不想依赖辅助文件...

在python程序中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

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

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

来自documentation -

  

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

如果按_(下划线),您想要匹配单个字符,则应使用 - ?,例如 -

glob.glob('*-C?')

请注意,glob只能在当前目录中搜索,但根据原始试用版的内容,看起来可能就是您想要的内容。

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

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

答案 1 :(得分:0)

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

import glob

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

答案 2 :(得分:0)

只需使用glob.glob进行搜索,然后os.system执行

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

我希望它能满足你的问题