在Python脚本中使用subprocess结合sed和变量
我想在一个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)