2015-11-11 51 views
-1

我想在这样的子使用剪切命令:如何在Python子进程中多次使用cut命令?

subprocess.Popen(['cut', '-d', '''(''', '-f2', 'file1.txt', '|', 'cut', '-d', ''')''', '-f1']) 

,并得到这个错误:

cut: only one type of list may be specified 

我怎样才能纠正呢?

+1

使用'popen'与参数列表和'壳= FALSE'意味着没有外壳。没有外壳,你不能有外壳管道。 –

+1

......你可以在你自己的*管道中设置多个串联在一起的“Popen”对象,这是你应该这样做的方式;阅读模块文档。 –

+0

我想这可以很容易地完成,而不需要子进程 –

回答

3

管道修建自己通过结合多个Popen对象:

p1 = subprocess.Popen(['cut', '-d(', '-f2', 'file1.txt'], stdout=subprocess.PIPE) 
p2 = subprocess.Popen(['cut', '-d)', '-f1'], stdin=p1.stdout, stdout=subprocess.PIPE) 
p1.stdout.close() 
print p2.communicate()[0] 
+0

这更清晰,然后我(删除)的尝试。谢谢 – Ward

+0

谢谢!有用 –

相关问题