jjzjj

python - 后台进程 subprocess.Popen with Pipe

我正在尝试使用arecord使用python记录和转换流。在shell中,这是一个或多或少类似的命令:arecord-B5000-fdat|lame-mj-q5-V2-test.mp3&在Python中,我用subprocess.Popen尝试了这个:reccmd=["arecord","-B","5000","-f","dat"]mp3cmd=["lame","-m","j","-q","5","-V","2","-","test.mp3"]p=subprocess.Popen(reccmd,stdout=subprocess.PIPE)p2=subprocess.Popen(mp3

python - 在一个脚本中使用 Python 的子进程和 Popen 来运行另一个需要用户交互的 Python 脚本(通过 raw_input)

我遇到的问题如下,我会用简单的例子来说明。我写了一个需要用户交互的python脚本,具体来说它使用raw_input()函数来获取用户的输入。下面的代码只是要求用户连续输入两个数字(在每个数字之间按回车键),然后返回答案(惊喜,惊喜,它叫做“sum_two_numbers.py”)。哼!#!/usr/bin/python#-------------------#sum_two_numbers.py#-------------------#Thisscriptaskstheuserfortwonumbersandreturnsthesum!a=float(raw_input("Enter

python - Popen.communicate() 返回 (None, None) 即使脚本打印结果

我对Popen.communicate()有疑问。我有返回字符串的脚本。然后我编写了第二个脚本来获取该变量。v="./myscriptarg1arg2"com=subprocess.Popen(v,shell=True).communicate()printcomcom返回(无,无)。关键是我可以先在脚本中打印结果,shell打印结果也是如此。我不能只将该打印分配给变量。当然第一个脚本返回值,而不是打印它。 最佳答案 来自docs:Notethatifyouwanttosenddatatotheprocess’sstdin,youn

python - 我可以在 Python 中将 io.BytesIO() 流通过管道传输到 subprocess.popen() 吗?

我正在尝试使用subprocess.popen()将io.BytesIO()字节流管道到一个单独的程序,但我不知道如何或是否完全可能。文档和示例都是关于文本和换行符的。当我做出这样的事情时:importiofromsubprocessimport*stream=io.BytesIO()someStreamCreatingProcess(stream)command=['somecommand','some','arguments']process=Popen(command,stdin=PIPE)process.communicate(input=stream)我明白了Tracebac

python - Popen.returncode 在 Python 中不起作用?

我有一段代码可以将文件从服务器传输到本地机器。然而,用户输入的目录可能并不总是正确的。如果用户输入了错误的目录,我会尝试显示错误。如果returncode不是None我将显示错误。但这不起作用。无论程序抛出什么,它总是转到else部分。#!/usr/bin/pythonimportsubprocessresult=subprocess.Popen(['sshpass','-p','password','rsync','-avz','--info=progress2','username@host_name:/file_name','/home/zurelsoft/test'],stdo

Python popen() - 通信(str.encode(编码 ="utf-8",错误 ="ignore"))崩溃

在Windows上使用Python3.4.3。我的脚本在控制台中运行一个小的java程序,应该得到输出:importsubprocessp1=subprocess.Popen([...],stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)out,err=p1.communicate(str.encode("utf-8"))这导致一个正常的'UnicodeDecodeError:'charmap'codeccan'tdecodebyte0x9dinposition135:charactermapst

python - 为什么 subprocess.Popen 在 args 是序列时不起作用?

当args参数作为序列给出时,我遇到了subprocess.Popen问题。例如:importsubprocessmaildir="/home/support/Maildir"这有效(它打印出/home/support/Maildir目录的正确大小):size=subprocess.Popen(["du-s-b"+maildir],shell=True,stdout=subprocess.PIPE).communicate()[0].split()[0]printsize但是,这行不通(试试看):size=subprocess.Popen(["du","-s-b",maildir],s

python - 如果我在 subprocess.Popen() 中不使用 stdout=subprocess.PIPE 有什么区别?

我最近在Python中注意到subprocess.Popen()有一个参数:stdout=None(default)我还看到有人使用stdout=subprocess.PIPE。有什么区别?我应该使用哪一个?另一个问题是,为什么wait()函数有时不能等到进程真正完成?我用过:a=sp.Popen(....,shell=True)a.wait()a2=sp.Popen(...,shell=True)a2.wait()有时a2命令在命令a完成之前执行。 最佳答案 stdout=None表示,进程的stdout-handle直接从父进程

python - 如何在 Python 2 上使用 psutil.Popen 和 unicode 命令

嘿,我正在尝试执行以下命令(使用psutil.Popen和python2.7):"C:\ProgramFiles(x86)\MicrosoftOffice\root\Office16\EXCEL.EXE""C:\docs\ת.xlsm"使用这段代码:dir=u"C:\\docs"doc=os.listdir(dir)[0]full_path=os.path.join(dir,doc)command=u"\"C:\\ProgramFiles(x86)\\MicrosoftOffice\\root\\Office16\\EXCEL.EXE\"\"{}\"".format(full_path

python - 为什么python subprocess.Popen通过cmd.exe启动一个子进程?

我这样调用子进程:command='c:\somepath\myexe.exe'startupinfo=subprocess.STARTUPINFO()startupinfo.dwFlags|=subprocess.STARTF_USESHOWWINDOWp=subprocess.Popen(command,shell=False,startupinfo=startupinfo)它似乎不是直接启动myexe.exe,而是通过cmd.exe。我可以在这里避免使用cmd.exe吗? 最佳答案 如果您使用的是Python2.7-使用sub