Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Bioinformatics - Fatal编程技术网

Python 对目录中的每个文件执行相同的命令

Python 对目录中的每个文件执行相同的命令,python,bioinformatics,Python,Bioinformatics,我希望在构造python脚本以获取目录中的每个文件并在每个文件上执行相同任务方面获得基本帮助。我有大量的蛋白质文件(FASTA格式),我使用的程序一次只允许搜索500个条目。因此,我需要分别为116个文件中的每个文件运行该程序,并使用各种选项,如“-N”和“-t0.800”。我搜索了帮助,我知道我必须导入操作系统等,但我从未使用过这些系统命令,所以我迷路了。感谢您的帮助 import subprocess for fname in list_of_files: r = subproces

我希望在构造python脚本以获取目录中的每个文件并在每个文件上执行相同任务方面获得基本帮助。我有大量的蛋白质文件(FASTA格式),我使用的程序一次只允许搜索500个条目。因此,我需要分别为116个文件中的每个文件运行该程序,并使用各种选项,如“-N”和“-t0.800”。我搜索了帮助,我知道我必须导入操作系统等,但我从未使用过这些系统命令,所以我迷路了。感谢您的帮助

import subprocess
for fname in list_of_files:
    r = subprocess.call(('your_command_here', '-N', '-t', '0.800', fname))
subprocess.call
将运行您的命令,等待它完成并返回退出代码(上面称为
r

子流程
功能非常强大。你可以阅读更多关于它的内容

更新:我从问题中假设您有一个文件列表。如果你没有,很容易得到一份清单。例如,如果您的文件都有扩展名
.blah
,则使用:

from glob import glob
list_of_files = glob('*.blah')

python模块
glob
接受所有常用的shell样式通配符。

或者只使用一些shell命令(下面假定为bash)。我通常先使用
echo
来确保一切都是无害的。在本例中,会回显一个文件名,另外还会回显一个具有不同后缀的新文件名(通过去掉.blah后缀并添加.result)。这对于合理地分组和关联结果非常有用。稍后,您将使用在
$f
上运行并将结果存储在
$f{%.blah}.result
中的内容替换echo命令

for f in *.blah; do
  echo $f ${f%.blah}.result
done
在一条线上<代码>用于*.c中的f;执行echo$f${f%.blah}.result;完成。 当然,也可以在上述情况下使用重定向,例如

command $f > ${f%.blah}.result
shell是一个非常自然的环境,可以像这样操作文件。您可以将命令存储在shell脚本中,作为记录工作流的一种方法。别忘了使用

set -e
set -o pipefail

这样脚本就可以在出现错误时退出,而不是在错误时出错。可以捕获此类错误并运行清理代码、通知或任何您可能需要的其他内容。

如果您使用的是类Unix系统,则不需要Python。只要做
find-在此处键入f-name“*.blah”| xargs-n1您的_命令_
。谢谢!这很有效!使用
xargs
的一件很酷的事情是,您还可以使用
-P
选项让它并行运行多个命令,因此,如果您的CPU有限且有许多内核,请尝试
-p8
或类似的方法。感谢您的帮助。那么,我如何制作文件列表?对不起,这个愚蠢的问题。