在工作中有一个列出已完成任务的脚本。这是由其他人编写的,并通过网络托管。我的.bashrc中有一个别名,它调用这个脚本,它有很多标志等,我想编写一个python脚本,每隔几分钟调用一次这个别名,这样我就可以打开一个带有更新统计信息的shell。但是,subprocess.call("myAlias")失败。我对python还是很陌生,并且正在努力解决这个问题。fromsubprocessimportcalldefcallAlias():call("myAlias")callAlias()我也计划添加更多,但我在第一步中遇到了障碍。:P我会发布更多信息,但我必须小心处理很多敏感的secr
我正在编写一个python脚本,它使用subprocess.Popen来执行两个程序(来自已编译的C代码),每个程序都会产生标准输出。该脚本获取该输出并将其保存到文件中。因为输出有时大到足以压倒subprocess.PIPE,导致脚本挂起,所以我将stdout直接发送到日志文件。我想让我的脚本在文件的开头和结尾以及两个subprocess.Popen调用之间写一些东西。但是,当我查看日志文件时,我从脚本写入日志文件的所有内容都放在文件的顶部,然后是所有可执行的标准输出。如何将添加的文本交错到文件中?defrun(cmd,logfile):p=subprocess.Popen(cmd,s
来自subprocess.run()上的文档中的示例似乎不应该有任何输出subprocess.run(["ls","-l"])#doesn'tcaptureoutput但是,当我在pythonshell中尝试它时,列表会被打印出来。我想知道这是否是默认行为以及如何抑制run()的输出。 最佳答案 这里是如何抑制输出,按清洁度递减的顺序。他们假设您使用的是Python3。您可以重定向到特殊的subprocess.DEVNULL目标。importsubprocesssubprocess.run(['ls','-l'],stdout=su
我有cmd=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)forlineincmd.stdout:columns=line.split('')print(columns[3])第3行出现错误TypeStr不支持缓冲区API。我在Python3.3上做错了什么 最佳答案 您正在读取二进制数据,而不是str,因此您需要先对输出进行解码。如果将universal_newlines参数设置为True,则使用locale.getpreferredencoding()metho
我有一个写入标准输出和可能标准错误的程序。我想从python运行它,捕获标准输出和标准错误。我的代码如下:fromsubprocessimport*p=Popen(exe,shell=TRUE,stdout=PIPE,stderr=PIPE)rtrncode=p.wait()对于几个程序,这可以正常工作,但是当我添加一个新程序时,新程序会永远挂起。如果我删除stdout=PIPE,程序会将其输出写入控制台并完成,一切都很好。如何确定导致挂起的原因?在WindowsXP上使用python2.5。该程序不会从标准输入读取数据,也没有任何类型的用户输入(即“按下键”)。
我正在尝试寻找一种方法来忽略标准错误流(类似于2>/dev/null):output=subprocess.check_output("netstat-nptl".split())我应该在上面的命令中添加什么来实现这一点? 最佳答案 只需告诉subprocess为您重定向它:importsubprocessoutput=subprocess.check_output("netstat-nptl".split(),stderr=subprocess.DEVNULL)对于python2,它有点冗长。importosimportsubpr
这个问题不太可能帮助任何future的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。#!/usr/bin/python3username='joe'#generatepassphrasepw_length=6phrase=subprocess.check_output(['pwgen',str(pw_length),'1'])phrase=phrase.decode('utf-8').strip()dev_null=open('/dev/null
我正在尝试将rsync与subprocess.call一起使用。奇怪的是,如果我传递subprocess.call一个字符串,它就可以工作,但它不适用于列表(ala,Python'sdoc)。用字符串调用sp.call:In[23]:sp.call("rsync-avcontent/writings_raw/",shell=True)sendingincrementalfilelistsent6236bytesreceived22bytes12516.00bytes/sectotalsizeis324710speedupis51.89Out[23]:0用列表调用sp.call:In[2
我在调用subprocess.Popen时设置环境变量时遇到问题。环境变量似乎没有被设置。有关如何为Python命令行调用正确设置环境变量的任何建议?我的目标是运行一个使用由我的Python代码确定的环境变量的脚本:d=dict(os.environ)d["TEST_VARIABLE"]=str(1234)subprocess.Popen('/usr/bin/mybinary',env=d).wait()但脚本的react就像从未设置过变量一样这是我尝试使用Python的交互式解释器进行的测试:d=dict(os.environ)d["TEST_VARIABLE"]=str(1234)
我正在尝试使用子进程模块和Popen在线程内启动“rsync”。在我调用rsync之后,我还需要读取输出。我正在使用通信方法来读取输出。当我不使用线程时,代码运行良好。看来,当我使用线程时,它会卡在通信调用上。我注意到的另一件事是,当我设置shell=False时,我在线程中运行时不会从通信中得到任何返回。 最佳答案 您没有提供任何代码供我们查看,但这里有一个与您描述的类似的示例:importthreadingimportsubprocessclassMyClass(threading.Thread):def__init__(sel