遍历 python 脚本中的文件并执行 bash 命令

iterate through files in python script and execute bash command

我正在尝试编写一个 python 脚本,循环遍历目录中的 SAM 文件并使用 samtools view 将这些 SAM 文件转换为 BAM 文件。这就是我所拥有的,但我正在努力解决如何将 SAM 文件 (i) 输入到最后一行的 bash 命令中。

import os
import glob
for i in glob.iglob('/file/path/to/files/*.sam'):
      os.system("samtools view -S -b %i > %i.bam" %i)

感谢您的帮助!

使用最新的 Python 版本,您可以使用 f-strings,其中 f 代表格式。

os.system(f"samtools view -S -b {i} > {i}.bam")

您最好使用经典的字符串连接技术来实现此目的。您基本上可以将结果添加到 os.system 调用中。

您可以将其重写为:

import os
import glob

for file in glob.iglob('/file/path/to/files/*.sam');
    command = "samtools view -S -b " + str(file) + " > " + str(file) + ".bam"
    os.system(command)

您甚至可以改用格式选项:

command = "samtools view -S -b {} > {}.bam".format(file, file)

python documentation 很好地解释了如何执行这些操作。