2014-03-13 205 views
1

我用subprocess.Popen参数列表太长

proc = subprocess.Popen(cmd, 
          stdin=subprocess.PIPE, 
          stdout=subprocess.PIPE, 
          stderr=subprocess.STDOUT, 
          shell=shell, 
          universal_newlines=False, 
          env=env) 

和代码失败,异常

File "subprocess.py", line 623, in __init__ 
File "subprocess.py", line 1141, in _execute_child 
OSError: [Errno 7] Argument list too long 

我发现我的命令长度真的很庞大,因此失败。现在我有正确的了。但是,我试图找到什么是我可以传递给子进程Popen的命令字符串的最大长度。

+1

最大长度取决于操作系统 - 也取决于环境变量的大小,因为命令行参数共享相同的空间。这是一个操作系统限制,而不是Python的限制,并且没有单一的,正确的正确的恒定值,我们可以给你。 –

+0

可能的重复[什么是args参数的subprocess.Popen最大长度?](http://stackoverflow.com/questions/2381241/what-is-the-subprocess-popen-max-length-of-the- args参数) –

+1

另请参阅http://www.in-ulm.de/~mascheck/various/argmax/ –

回答

0

这取决于操作系统。在Windows中,您的选择是尝试使用PowerShell,或者查找将参数传递给正在调用的应用程序的不同方式。