我正在尝试使用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脚本,具体来说它使用raw_input()函数来获取用户的输入。下面的代码只是要求用户连续输入两个数字(在每个数字之间按回车键),然后返回答案(惊喜,惊喜,它叫做“sum_two_numbers.py”)。哼!#!/usr/bin/python#-------------------#sum_two_numbers.py#-------------------#Thisscriptaskstheuserfortwonumbersandreturnsthesum!a=float(raw_input("Enter
我对Popen.communicate()有疑问。我有返回字符串的脚本。然后我编写了第二个脚本来获取该变量。v="./myscriptarg1arg2"com=subprocess.Popen(v,shell=True).communicate()printcomcom返回(无,无)。关键是我可以先在脚本中打印结果,shell打印结果也是如此。我不能只将该打印分配给变量。当然第一个脚本返回值,而不是打印它。 最佳答案 来自docs:Notethatifyouwanttosenddatatotheprocess’sstdin,youn
我正在尝试使用subprocess.popen()将io.BytesIO()字节流管道到一个单独的程序,但我不知道如何或是否完全可能。文档和示例都是关于文本和换行符的。当我做出这样的事情时:importiofromsubprocessimport*stream=io.BytesIO()someStreamCreatingProcess(stream)command=['somecommand','some','arguments']process=Popen(command,stdin=PIPE)process.communicate(input=stream)我明白了Tracebac
我有一段代码可以将文件从服务器传输到本地机器。然而,用户输入的目录可能并不总是正确的。如果用户输入了错误的目录,我会尝试显示错误。如果returncode不是None我将显示错误。但这不起作用。无论程序抛出什么,它总是转到else部分。#!/usr/bin/pythonimportsubprocessresult=subprocess.Popen(['sshpass','-p','password','rsync','-avz','--info=progress2','username@host_name:/file_name','/home/zurelsoft/test'],stdo
在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
当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=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直接从父进程
嘿,我正在尝试执行以下命令(使用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
我这样调用子进程: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