在Python脚本中使用subprocess结合sed和变量

0 投票
2 回答
2155 浏览
提问于 2025-04-18 08:16

我想在一个Python脚本里使用sed或tr来给fastafile引入一个ID。

我试过这样做,但出现了语法错误:

subprocess.call(['sed\'s/>/>'+identifier+'/g\' <'+path+'>transcriptome')],shell=True)

这里的identifier和path是变量。这个操作必须放在一个循环里,对于每个ID和对应的路径,它需要改变典型的fasta格式:把>isotig123改成>IDisotig123。每个ID都要对应到它们各自的ID。

谢谢。

2 个回答

0

试试这个

subprocess.call(['sed -e "s/>/>'+identifier+'/g" '+path+' >transcriptome')],shell=True)
  • \' 替换成 ",放在 sed 操作的周围
  • < 替换成直接的文件引用
  • 加上 -e 来使用操作命令

假设标识符中不包含特殊字符 &\/,就像你示例中的那样

0

在sed命令和它的参数之间缺少一个空格。试试这样:

subprocess.call(['sed \'s/>/>'+identifier+'/g\' <'+path+'>transcriptome')],shell=True)

撰写回答