我正在使用Python和subprocess.Popen来调用系统调用。我在subprocess.Popen参数下传递了非常长的字符串,即self.description值,如下所示。 firstProcess = subprocess.Popen(["echo",self.description], stdout=subprocess.PIPE) 然而,我得到了这个错误,它说:Argument list too long File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_chi
我正在尝试运行一个进程,当它完成时,读取stderr和stdout。我发现使用Python实现这一点的唯一方法是创建一个subprocess.Popen,使用subprocess.PIPE作为标准错误和标准输出参数,然后读取Popen.stderr和Popen.stdout文件描述符。
In [133]: subprocess.call(['python', '-c', "import sys; sys.exit(1)"])
Out[133]: 1
In [134]: p = subprocess.Popen(['python'
我正在编写一个脚本,以便从python中编译.java文件,但错误
import subprocess
def compile_java(java_file):
cmd = 'javac ' + java_file
proc = subprocess.Popen(cmd, shell=True)
compile_java("Test.java")
错误:
javac is not recognized as an internal or external command windows 7
我知道如何解决windows上CMD的问题。但是我如
我有一个程序script.out,我需要对10个文件运行,并将它们的输出重定向到10个文件。我正在使用subprocess.Popen()来完成这项工作,但是当重定向stdout流时,它似乎会捕捉到一些错误。
...
for i in range(10):
data = subprocess.Popen([ script.out, "<", input_file[i], ">", output_file[i]])
为了解决这个问题,我使用os.system()直接运行。但是我想知道为什么subprocess.Popen()进程失败了?
我的代码:
jarfile = "res/StringUtilsv102.jar"
#project = "5.1"
#apkName = "com.am.fl" // added to show what ll b strin passed on to the function
def generate_idfile(project,apkName):
cmd = "java -jar %s listStringIds %s %s" %(jarfile, project ,apkName)
arglist =
我想启动一个子进程并读取它的stderr,但是到目前为止,我根本不能使用subprocess.Popen读取任何东西,即使是stdout。我尝试使用subprocess.communicate()从标准输出和标准错误中读取数据。这就是我要做的:
import subprocess
p = subprocess.Popen('ls')
s = p.communicate()
print s
这给出了输出(None,None)。我认为这对是针对stdin和stderr的。真的是这样吗?无论如何,如何从subprocess.Popen启动的进程中读取stdout和stderr?
当我跑的时候
proc = subprocess.Popen(['git', 'add', '-A'], stdout=subprocess.PIPE)
我知道这个错误
fatal: not a git repository (or any parent up to mount point /media)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
但跑
os.system('git add -A')
把工作做得很完美。
如果