Articles of subprocess

在使用python的现场mp3 ffmpeg编码器错误

我有一个像下面的代码。 我想录制声音,并使用ffmpeg实时将每个wav帧转换为mp3格式 import pyaudio,sys import subprocess command = ['ffmpeg', '-y','-f','wav' , '-i', '-', '-f', 'mp3', '-'] process = subprocess.Popen(command, stdin=subprocess.PIPE) p = pyaudio.PyAudio() CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 1024*10 RECORD_SECONDS = 2 stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) mp3 = open("mp3.mp3",'wb') for i in range(0, int(RATE / CHUNK […]

如何处理从Python中的subprocess返回的负数?

python中的这段脚本: cmd = 'installer.exe –install …' #this works fine, the … just represent many arguments process = subprocess.Popen(cmd) process.wait() print(process.returncode) 这个代码工作正常,在我看来,问题是.returncode的价值。 安装程序.exe是好的,做了很多testing,现在我试图在python中创build一个脚本来自动执行这个installer.exe很多天的testing。 installer.exe返回: – 成功为0; – 失败和错误是负数 我有一个特定的错误,即-307 installer.exe返回。 但是当python执行print(process.returncode)显示4294966989 …如何处理python中的负数,在这种情况下显示-307? 我是新的python和env是win7 32和python 3.4。 编辑:最后的代码工作这段代码的作用是运行许多简单的testing: import subprocess, ctypes, datetime, time nIndex = 0 while 1==1: cmd = 'installer.exe –reinstall -n "THING NAME"' process = subprocess.Popen( […]

Python产生一个子subprocess,分离并退出

我想知道这是否是正确的方式来执行系统进程并从父母分离,但允许父母退出而不创build僵尸和/或杀死subprocess。 我目前正在使用的subprocess模块,这样做… os.setsid() os.umask(0) p = subprocess.Popen(['nc', '-l', '8888'], cwd=self.home, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.setsid()更改进程组,我相信这是进程在父进程退出时继续运行的原因,因为它不再属于同一个进程组。 这是正确的,这也是一个可靠的方式来执行此? 基本上,我有一个远程控制实用程序通过套接字进行通信,并允许远程启动进程,但是我必须确保,如果远程控制器死亡,它启动的进程继续运行不受影响。 我正在阅读有关双叉,不知道这是否是必要的和/或subprocess.POpen close_fds以某种方式照顾,所需的一切是改变进程组? 谢谢。 伊利亚

OSError:subprocess中的参数无效

Python 3.3.3 Windows 7 Here is the full stack: Traceback (most recent call last): File "Blah\MyScript.py", line 578, in Call output = process.communicate( input=SPACE_KEY, timeout=600 ) File "C:\Python33\lib\subprocess.py", line 928, in communicate stdout, stderr = self._communicate(input, endtime, timeout) File "C:\Python33\lib\subprocess.py", line 1202, in _communicate self.stdin.write(input) OSError: [Errno 22] Invalid argument 代码如下所示: process = subprocess.Popen( arguments, […]

在Python中按顺序执行命令

我想要连续执行多个命令: 即(只是为了说明我的需要): cmd (shell) 然后 CD迪尔 和 LS 并读取ls的结果。 任何想法与subprocess模块? 更新: cd dir和ls只是一个例子。 我需要运行复杂的命令(按照特定的顺序,没有任何stream水线)。 事实上,我想要一个subprocessshell,并能够启动许多命令。

Python连续阅读Popen(Windows)

我试图stdout.readline并把结果(即每行,在打印到terminal时)在一个multiprocessing.Queue我们在另一个.py文件。 不过,电话: res = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=1 ) with res.stdout: for line in iter(res.stdout.readline, b''): print line res.wait() 将阻止并在结束后打印结果(如果退出代码未返回,则完全不打印)。 我已经浏览了这个答案,尝试设置bufsize = 1,产生处理读取的线程,使用文件描述符等。似乎没有任何工作。 我可能不得不使用模块pexpect但我不知道它是如何工作的。 我也试过了 def enqueue_output(self, out, queue): for line in iter(out.readline, b''): queue.put([line]) out.close() 为了把数据放在队列中,但由于out.readline似乎阻塞,结果将是相同的。 简而言之:如何在打印时使我的子过程输出可用? 它一次打印1到10行的数据块,但是当这个过程完成时,这些数据会被返回给我,并由换行符分隔。 有关: Pythonsubprocessreadlines()挂起 Python:从subprocess.communicate()读取stream式input 非阻塞读取python中的subprocess.PIPE

python:为什么调用回声与subprocess返回WindowsError 2?

在我的程序中,我有一个函数runScript(): def runScript(): subprocess.call(['echo', 'hello']) 我在Python文档中看到了很多类似的例子,所以我认为这是可行的。 但是,当我在我的程序中调用这个函数时,它返回一个WindowsError。 WindowsError: [Error 2] The system cannot find the file specified 为什么会这样呢? 我该如何解决?

“是”报告错误与subprocess通信()

我正在使用以下函数在Python中运行命令: def run_proc(cmd): child = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = child.communicate() returncode = child.returncode return stdout, stderr, returncode 它一直工作正常,但是现在我试图使用yes程序来pipe道输出到标准input。 我试图运行的命令如下: yes '' | apt-get -y -o Dpkg::Options::="–force-confdef" -o Dpkg::Options::="–force-confold" dist-upgrade 但我相信它可以用一个一般的例子来代替,例如: yes | head -3 | cat 我的问题是,如果我尝试运行任何有yes |命令 在上面的subprocess.Popen将包含错误消息: yes: standard output: Broken pipe yes: write error 对我来说,似乎pipe道仍然有效,从yes | head -3 | […]

Windowssubprocess。打开一个没有shell = True的batch file

我有一个运行lessc的函数(使用npm install -g less ): >>> import subprocess >>> subprocess.Popen(['lessc']) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\subprocess.py", line 679, in __init__ errread, errwrite) File "C:\Python27\lib\subprocess.py", line 896, in _execute_child startupinfo) WindowsError: [Error 2] The system cannot find the file specified 不幸的是,除非我添加shell=True ,否则不起作用: >>> subprocess.Popen(['lessc'], shell=True) <subprocess.Popen object at 0x01F619D0> […]

如何使一个可以注销,关机,并重新启动计算机的Python脚本?

背景 我目前正在教自己的python,我认为这将是一个非常酷的项目,有一个“控制中心”,我可以closures,重新启动,并注销我的电脑。 我也想使用subprocess模块,因为我听说导入OS模块已经过时了。 当前代码 def shutdown(self): import subprocess subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 题 我真正问的是,有没有办法(使用subprocess模块)注销并重新启动我的电脑? 技术规格 Python 2.7.3 Windows 7,32位