Python -c:第0行:意外标记“(”附近出现语法错误

Python -c:第0行:意外标记“(”附近出现语法错误,python,linux,bash,Python,Linux,Bash,我有一个PYTHON脚本,它接受一个输入文件并给出一个输出文件。输入文件和输出文件被视为sys.argv[1]和[2],如下所示: myscript.py input.file output.file 不幸的是,输入文件需要预处理以满足脚本的要求。我可以预处理原始文件并转换为可接受的格式。预处理步骤如下: awk 'NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0}' filename.fastq > filename.fa 但是

我有一个PYTHON脚本,它接受一个输入文件并给出一个输出文件。输入文件和输出文件被视为sys.argv[1]和[2],如下所示:

myscript.py input.file output.file
不幸的是,输入文件需要预处理以满足脚本的要求。我可以预处理原始文件并转换为可接受的格式。预处理步骤如下:

awk 'NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0}' filename.fastq > filename.fa
但是,有1000多个这样的文件,为了节省一些存储空间,我希望脚本通过进程替换获取预处理的数据,我在这里找到了一个解决方案:

因此,以下方法非常有效:

myscript.py <(awk 'NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0}' input.fastq) output_processed.fa
然而,正如我提到的,我有1000个这样的文件,我编写了一个python脚本来循环所有文件,然后将上面的命令嵌套在os.system中,如下所示

os.system("myscript.py <(awk 'NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0}' input.fastq) output_processed.fa")
但是,这次当我运行脚本时,出现以下错误:

sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `myscript.py <(awk 'NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0}' input.fastq) output_processed.fa'
对于同一个错误,我可以找到很多答案,但没有一个对我有效。我尝试了以下链接:

当我使用上述解决方案时,我得到了下线错误

我从这里知道这是一个错误的语法:

然后我尝试了/然后我得到了以下错误:

 IOError: [Errno 2] No such file or directory: '/<(awk NR % 4 == 1 {print ">" $0 } NR % 4 == 2 {print $0} input.fastq)

您能为我推荐一个解决方案吗?

明确使用bash进行流程替换

os.system("bash -c \"myscript.py <(awk -v gt='>' 'NR % 4 == 1 {print gt $0 } NR % 4 == 2 {print $0}' input.fastq) output_processed.fa\"")
如果您控制myscript.py,允许它接受stdin上的数据而不是文件名,您就可以编写

os.system("awk '...' input.fastq | myscript.py output_processed.fa")

您是否在shell中尝试过该命令?如果是,结果是什么?如果是相同的,则不是pytho问题。请注意,您可以使用子流程和管道来实现相同的结果,或者甚至放弃awk调用并用本机python编写代码,这样会更简单
os.system("awk '...' input.fastq | myscript.py output_processed.fa")