我不明白为什么我的子进程命令(python 2.7)不起作用。任何的想法?感谢。
In [35]: import subprocess
In [36]: subprocess.call("for f in $(find _test/ -name *.c -print); do echo hello; done ".split(),shell=True)
f: -c: line 0: syntax error near unexpected token `newline'
f: -c: line 0: `for'
Out[36]: 2
答案 0 :(得分:1)
您应该删除对.split()
的通话; shell将为您分割命令,因为您正在使用shell=True
。
值得注意的是,该命令不一定像您期望的那样工作。你应该用单引号包围glob,这样它就不会被shell扩展:
for f in $(find _test/ -name '*.c' -print); do echo hello; done
如果您的任何文件名中包含空格,则此命令会将它们视为单独的文件(例如,如果您有一个名为foo bar.txt
的文件,则此循环将看到两个文件名foo
和{ {1}})。如果您计划在Python中做任何事情而不是炮轰,那么很多更安全。