Articles of subprocess

让subprocess在Windows上findgit可执行文件

import subprocess proc = subprocess.Popen('git status') print 'result: ', proc.communicate() 我有我的系统pathgit,但是当我像这样运行subprocess时,我得到: WindowsError: [Error 2] The system cannot find the file specified 我怎样才能让subprocess在系统path中findgit? Windows XP上的Python 2.6。

Python – subprocess.call使用cygwin而不是Windows上的cmd

我在Windows 7上进行编程,在我需要调用bedtools的 python项目之一中,只能在Windows上使用cygwin。 我是cygwin的新手,安装了默认版本+ bedtools所需的所有东西,然后使用cygwin按照安装说明中的说明使用make安装bedtools。 $ tar -zxvf BEDTools.tar.gz $ cd BEDTools-<version> $ make 当我使用cygwinterminal像下面那样手动调用它时,它工作正常,输出文件包含正确的结果。 bedtools_exe_path intersect -a gene_bed_file -b snp_bed_file -wa -wb > output_file 但是,当我在我的程序中使用subprocess.call似乎使用Windows CMD,而不是cygwin,这是行不通的。 arguments = [bedtools_exe_path, 'intersect', '-a', gene_bed_file, '-b', snp_bed_file, '-wa', '-wb', '>', output_file] return_code = suprocess.call(arguments) 结果在没有输出文件和返回码3221225781。 arguments = [bedtools_exe_path, 'intersect', '-a', gene_bed_file, '-b', snp_bed_file, '-wa', '-wb', '>', output_file] […]

终止Windows中的subprocess,访问被拒绝

– import time import subprocess from os.path import expanduser chrome_path = expanduser('~\Local Settings\Application Data\Google\Chrome\Application\chrome.exe') proc = subprocess.Popen(chrome_path) time.sleep(4) proc.terminate() 输出: WindowsError: [Error 5] Access is denied 我如何杀死Chrome进程? Windows XP上的Python 2.6。

subprocess.call不能按预期方式工作

我有以下batch file(test.bat) my.py < commands.txt my.py执行以下操作: import sys print sys.stdin.readlines() 一切工作正常,如果我从命令行(从Windows 7中的cmd.exeshell)启动此batch file。 但是,如果我试图通过从python subprocess.call函数运行它不起作用。 我如何尝试从python运行它: import subprocess import os # Doesn't work ! rc = subprocess.call("test.bat", shell=True) print rc 这是我得到的错误信息: >my.py 0<commands.txt Traceback (most recent call last): File "C:\Users\…..\my.py ", line 3, in <module> print sys.stdin.readlines() IOError: [Errno 9] Bad file descriptor 1 我使用Python […]

如何在subprocess中启动崩溃(很less)的应用程序

我有python应用程序需要执行专有的应用程序(它不时崩溃)每天约20 000次。 问题是当应用程序崩溃,Windows会自动触发WerFault ,这将保持程序挂起,因此python的subprocess.call()将永远等待用户input(应用程序必须在周末,节假日,24/7运行…所以这是不能接受的)。 如果要sleep; poll; kill; terminate sleep; poll; kill; terminate sleep; poll; kill; terminate但这意味着使用communicate() ,应用程序可以运行从几个毫秒到2小时,所以设置固定超时将无效 我也尝试开启自动debugging (使用一个脚本,将采取一个应用程序的崩溃转储和终止id),但不知何故这个howto不工作在我的服务器(WerFault仍然出现,等待用户input)。 其他几个教程也没有任何效果。 问题 :如何防止WerFault显示(等待用户input)? 这是更系统的编程问题 另一个问题 :是否有一个在Python中优雅的方式如何检测应用程序崩溃(是否显示WerFault )