Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将命令应用于python中的文件列表_Python_Command_Call - Fatal编程技术网

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

将命令应用于python中的文件列表,python,command,call,Python,Command,Call,我有个棘手的问题。我需要将一个名为xRITDecompress的特定命令应用于扩展名为-C_u的文件列表,我应该使用Python来完成这项工作 不幸的是,此命令不适用于通配符,我无法执行以下操作: os.system("xRITDecompress *-C_") 原则上,我可以使用for循环编写一个辅助bash脚本,并在python程序中调用它。但是,我不想依赖辅助文件 在python程序中执行此操作的最佳方法是什么?您可以使用获取要在其上运行命令的文件列表,然后针对该列表中的每个文件运行命令

我有个棘手的问题。我需要将一个名为
xRITDecompress
的特定命令应用于扩展名为
-C_u
的文件列表,我应该使用Python来完成这项工作

不幸的是,此命令不适用于通配符,我无法执行以下操作:

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

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

您可以使用获取要在其上运行命令的文件列表,然后针对该列表中的每个文件运行命令-

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

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

如果通过
(下划线)匹配单个字符,则应使用-
,如-

glob.glob('*-C?')
请注意,
glob
只会在当前目录中搜索,但根据您对原始试用版的要求,这可能是您想要的


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

import subprocess
import glob
for f in glob.glob('*-C_'):
    subprocess.call(['xRITDecompress',f])
您可以使用或获取与给定模式匹配的文件:

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)

我希望它能满足您的问题

谢谢,我将尝试使用子流程。下划线是扩展名“-C_uu”的一部分:解压缩后,文件名结尾变为“-uuu”。好的,这将更改子流程示例中的代码。@urgeo另外,我想建议如果答案对您有帮助,您应该单击左侧的勾号(以对您最有帮助的为准)来接受它们,这将有助于社区。谢谢,这就是我要找的!