草庐IT

python - 如何在带有子进程的 Python 中使用 mv 命令

我在/home/somedir/subdir/中有很多文件,我正在尝试以编程方式将它们全部移动到/home/somedir。现在我有这个:subprocess.call(["mv","/home/somedir/subdir/*","somedir/"])但它给了我这个错误:mv:cannotstat`/home/somedir/subdir/*':Nosuchfileordirectory我知道它确实存在,因为当我使用与脚本使用的命令完全相同的命令手动键入mv命令时,它工作得很好。 最佳答案 如果你这样调用子进程:subproce

Python 子进程参数

例如,我正在使用ffplay并希望运行此命令-bufsize[:stream_specifier]integer(output,audio,video)目前我有这个:subprocess.call(["ffplay","-vn","-nodisp","-bufsize4096","%s"%url])但这表示它是无效的。 最佳答案 正如JBernardo在评论中提到的,将"-bufsize4096"参数分成两个,"-bufsize","4096"。当subprocess.call与shell=False(默认)一起使用时,每个参数都需

python - 如何捕获子进程的 stdout 输出?

我正在尝试用Python编写一个程序,我被告知要运行一个.exe文件。运行此.exe文件时,它会吐出大量数据,我需要将某一行打印到屏幕上。我很确定我需要使用subprocess.popen或类似的东西,但我是subprocess的新手并且没有任何线索。任何人都有一个简单的方法让我完成这项工作? 最佳答案 如果您有兴趣在流程完成执行后打印输出,@Paolo的解决方案是完美的。如果你想在进程运行时轮询输出,你必须这样做:process=subprocess.Popen(cmd,stdout=subprocess.PIPE)whileTr

具有超时和大输出 (>64K) 的 python 子进程

我想执行一个进程,通过以秒为单位的某个超时限制执行时间并获取进程产生的输出。我想在windows、linux和freebsd上执行此操作。我已经尝试通过三种不同的方式实现这一点:cmd-没有超时和subprocess.PIPE用于输出捕获。行为:按预期运行但不支持超时,我需要超时...cmd_to-带有超时和subprocess.PIPE用于输出捕获。行为:当输出>=2^16字节时阻止子进程执行。cmd_totf-带有超时和用于输出捕获的tempfile.NamedTemporaryfile。行为:按预期运行,但使用磁盘上的临时文件。这些在下面可用以供仔细检查。从下面的输出中可以看出,

python创建名为temporaryfile的临时文件并在其上调用子进程

我在生成临时文件并随后执行它时遇到问题。我的过程看起来很简单:-使用tempfile.NamedTemporaryFile创建临时文件-将bash指令写入文件-启动一个子进程来执行创建的文件这里是实现:fromtempfileimportNamedTemporaryFileimportosimportsubprocessscriptFile=NamedTemporaryFile(delete=True)withopen(scriptFile.name,'w')asf:f.write("#!/bin/bash\n")f.write("echotest\n")os.chmod(script

python - 远程服务器上的子进程

我正在使用这段代码在远程服务器上执行命令。importsubprocessimportsysCOMMAND="ls"ssh=subprocess.Popen(["ssh","%s"%HOST,COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)result=ssh.stdout.readlines()ifresult==[]:error=ssh.stderr.readlines()print>>sys.stderr,"ERROR:%s"%errorelse:printresult当我尝试执行此脚本时,系统

Python IDLE子进程错误?

IDLE'ssubprocessdidn'tmakeconnection.EitherIDLEcan'tstartasubprocessorpersonalfirewallsoftwareisblockingtheconnection.不要以为有人问过这个问题-为什么在运行非常简单的程序时偶尔会出现这个问题-然后我必须转到任务管理器并停止所有Pythonw进程才能让它再次工作?它似乎在不同的代码位上随机发生-这是我目前正在做的-f=open('money.txt')currentmoney=float(f.readline())print(currentmoney,end='')how

python - 如何将子进程命令的错误消息保存到文件

当使用子进程运行bash命令时,我可能会遇到命令无效的情况。在这种情况下,bash将返回一条错误消息。我们怎样才能捕捉到这条消息呢?我想将此消息保存到日志文件中。以下是一个示例,我尝试在不存在的目录中列出文件。try:subprocess.check_call(["ls","/home/non"])df=subprocess.Popen(["ls","/home/non"],stdout=subprocess.PIPE)output,err=df.communicate()#processoutputsexceptExceptionaserror:printerrorsys.exit(

python - 子进程调用,它们是并行完成的吗?

我一直在谷歌上搜索这个问题的答案,但似乎没有任何答案。谁能告诉我subprocess模块是否并行调用?Python文档建议它可用于生成新进程,但没有提及它们是否并行。如果它们可以并行完成,您能否给我一个示例或将我链接到一个示例? 最佳答案 这取决于你如何使用subprocess:subprocess.call("some-program")将阻塞直到some-program完成。p=subprocess.Popen("some-program")将在单独的进程中运行some-program,与脚本的其余部分并行运行。请注意,第一个只

python - 我能以某种方式与子进程共享一个异步队列吗?

我想使用队列将数据从父进程传递到通过multiprocessing.Process启动的子进程。但是,由于父进程使用Python的新asyncio库,队列方法需要是非阻塞的。据我了解,asyncio.Queue是为任务间通信而制作的,不能用于进程间通信。另外,我知道multiprocessing.Queue有put_nowait()和get_nowait()方法,但我实际上需要仍然会阻塞当前的协程任务(但不是整个过程)。有什么方法可以创建包装put_nowait()/get_nowait()的协程吗?另一方面,multiprocessing.Queue使用的线程是否与在同一进程中运行的