0

我正在尝试编写一个循环遍历目录中的 SAM 文件并用于samtools view将这些 SAM 文件转换为 BAM 文件的 python 脚本。这就是我所拥有的,但我正在努力解决如何将 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)

感谢您的帮助!

4

2 回答 2

3

使用最新的 Python 版本,您可以使用f 字符串,其中 f 代表格式化。

os.system(f"samtools view -S -b {i} > {i}.bam")
于 2021-08-09T19:11:55.110 回答
2

您最好使用经典的字符串连接技术来实现这一点。您基本上可以将结果添加到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)

您甚至可以改用 format 选项:

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

python 文档很好地解释了如何进行这些操作。

于 2021-08-09T19:19:44.783 回答