草庐IT

subprocesses

全部标签

python - Windows 上使用 Python 和 subprocess.Popen() 的 Unicode 文件名

为什么会出现以下情况:>>>u'\u0308'.encode('mbcs')#UMLAUT'\xa8'>>>u'\u041A'.encode('mbcs')#CYRILLICCAPITALLETTERKA'?'>>>我有一个Python应用程序接受来自操作系统的文件名。它适用于某些国际用户,但不适用于其他用户。例如,这个unicode文件名:你'\u041a\u0433\u044b\u044b\u0448\u0444\u0442'不会使用Windows的“mbcs”编码(文件系统使用的编码,由sys.getfilesystemencoding()返回)进行编码。我得到“????????

python - Subprocess.call 或 Subprocess.Popen 不能使用 PATH (Linux/Windows) 中的可执行文件

我正在编写一个需要在Linux和Windows上运行并使用路径中存在的可执行文件(带参数)的程序。(假设)目前,我在使用Subprocess.Call和Subprocess.Popen在Windows中运行可执行文件时遇到问题。对于像这样的代码,在windows8中defmakeBlastDB(inFile,inputType,dbType,title,outDir):strProg='makeblastdb'strInput='-in'+inFilestrInputType='-input_type'+inputTypestrDBType='-dbtype'+dbTypestrTit

python - subprocess.check_output() : show output on failure

此时subprocess.check_output()的输出如下所示:CalledProcessError:Command'['foo',...]'returnednon-zeroexitstatus1有没有办法获得更好的错误信息?我想查看stdout和stderr。 最佳答案 将STDERR重定向到STDOUT。示例来自口译员:>>>try:...subprocess.check_output(['ls','-j'],stderr=subprocess.STDOUT)...exceptsubprocess.CalledProces

python - 从 python subprocess.call 调用 rsync

我正在尝试通过ssh从python脚本中的子进程执行rsync,以将图像从一台服务器复制到另一台服务器。我有一个函数定义为:defrsyncBookContent(bookIds,serverEnv):bookPaths=""iflen(bookIds)>1:bookPaths="{"+",".join(("book_"+str(x))forxinbookIds)+"}"else:bookPaths="book_"+str(bookIds[0])forhostinserverEnv['content.hosts']:args=["rsync","-avz","--include='*/

python - 处理带空格的目录 Python subprocess.call()

我正在尝试创建一个程序来扫描文本文件并将参数传递给子进程。一切正常,直到我得到路径中有空格的目录。我的split方法分解了参数,但在空格上出错了:s="svnmovefolder/hello\worldanotherfolder/hello\world"task=s.split("")process=subprocess.check_call(task,shell=False)做吧,要么我需要函数来解析正确的参数,要么我将整个字符串传递给子进程而不先分解它。虽然我有点迷路。 最佳答案 改用列表:task=["svn","move",

python ,子进程: reading output from subprocess

我有以下脚本:#!/usr/bin/pythonwhileTrue:x=raw_input()printx[::-1]我从ipython调用它:In[5]:p=Popen('./script.py',stdin=PIPE)In[6]:p.stdin.write('abc\n')cba而且效果很好。但是,当我这样做时:In[7]:p=Popen('./script.py',stdin=PIPE,stdout=PIPE)In[8]:p.stdin.write('abc\n')In[9]:p.stdout.read()解释器挂起。我究竟做错了什么?我希望能够多次从另一个进程写入和读取,以将一

python - args 参数的 subprocess.Popen 最大长度是多少?

我正在使用Popen从subprocess模块执行命令行工具的功能:subprocess.Popen(args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=False,shell=False,cwd=None,env=None,universal_newlines=False,startupinfo=None,creationflags=0)我使用的工具获取一个文件列表,然后进行处理。在某些情况下,此文件列表可能会很长。有没有办法找到args参数的最大长度?

python - subprocess.call() 和 subprocess.Popen() 之间有什么区别使前者的 PIPE 安全性降低?

我已经查看了它们的文档。这个问题是由J.F.在这里的评论提示的:Retrievingtheoutputofsubprocess.call()subprocess.call()的当前Python文档说明以下关于将PIPE用于subprocess.call()的内容:NoteDonotusestdout=PIPEorstderr=PIPEwiththisfunction.ThechildprocesswillblockifitgeneratesenoughoutputtoapipetofilluptheOSpipebufferasthepipesarenotbeingreadfrom.Py

python - 使用 subprocess.Popen 时将大量数据通过管道传输到标准输入

我有点难以理解解决这个简单问题的python方法是什么。我的问题很简单。如果您使用以下代码,它将挂起。这在子流程模块文档中有详细记录。importsubprocessproc=subprocess.Popen(['cat','-'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,)foriinrange(100000):proc.stdin.write('%d\n'%i)output=proc.communicate()[0]printoutput搜索解决方案(有一个非常有见地的线程,但我现在已经丢失了)我找到了这个使用显式fork的解决方案

python - 为什么 python.subprocess 在 proc.communicate() 之后挂起?

我有一个名为my_own_exe的交互式程序。首先,它打印出alive,然后你输入S\n,然后它再次打印出alive。最后输入L\n。它进行一些处理并退出。但是,当我从以下python脚本调用它时,程序似乎在打印出第一个“活着”后挂起。这里有人能告诉我为什么会这样吗?//看完后续(谢谢大家),修改代码如下:importsubprocessimporttimebase_command="./AO_FelixStrategy_UnitTest--bats31441--chix12467--enxutp31884--turq26372--symbolSOGN--target_date"+'2