Python 使用子流程模块运行.bat文件并将其输入
关于在python中使用Python 使用子流程模块运行.bat文件并将其输入,python,windows,batch-file,subprocess,Python,Windows,Batch File,Subprocess,关于在python中使用子流程模块运行批处理文件的快速问题 背景 我正在从python运行一个.bat文件,.bat运行一个windows应用程序100%(大约需要一分钟),然后等待来自stdio(x或Esc)的输入来关闭它 我正在做的是: subprocess.call([r'C:\Users\caSaira\Desktop\myExample.bat'], shell=True) 因为我不确定如何给出x或Esc,所以我什么也没做(假设这将处于等待输入的阶段)。 但是,看起来windows应
子流程
模块运行批处理文件的快速问题
背景
我正在从python运行一个.bat
文件,.bat运行一个windows应用程序100%(大约需要一分钟),然后等待来自stdio(x或Esc)的输入来关闭它
我正在做的是:
subprocess.call([r'C:\Users\caSaira\Desktop\myExample.bat'], shell=True)
因为我不确定如何给出x或Esc,所以我什么也没做(假设这将处于等待输入的阶段)。
但是,看起来windows应用程序在无限循环中运行
问题
我终于明白了。。我必须使用Popen和通讯功能
cmd1 = [r'myFile.bat']
p = SP.Popen(cmd1,stdin=SP.PIPE,stdout=SP.PIPE)
output = p.communicate(input='x'.encode())[0]
print(output.decode('ascii'))
我终于明白了。。我必须使用Popen和通讯功能
cmd1 = [r'myFile.bat']
p = SP.Popen(cmd1,stdin=SP.PIPE,stdout=SP.PIPE)
output = p.communicate(input='x'.encode())[0]
print(output.decode('ascii'))
等待输入的是什么?批处理文件中的代码还是它运行的Windows应用程序?是否有某种原因使您通过批处理文件而不是直接(尽管
子流程
)运行后者?@martineau一旦windows应用程序完成其处理,它将等待用户输入关闭应用程序(请输入x或ESC关闭)@martineau没有具体原因。。。命令提示符无法找到我正在运行的应用程序,因为它是一个自定义的.exe fle/。。我想,我会将cd刻录到exe位置,然后运行应用程序。。。所以我的批处理文件只有两行代码。。1) 将目录更改为.exe位置2)使用一些命令行参数运行windows应用程序如果在批处理文件中或直接使用子进程执行.exe
-指定.exe的完整路径,则会找到它(如果存在)。您还可以指定参数,以便通过子流程
传递它,并根据需要使用stdin
和/或stdout
的i/o重定向。我理解。。但“x”或ESC不是输入命令行参数。。这些是流程完成后需要输入的关键输入。等待输入的是什么,批处理文件中的代码还是它运行的Windows应用程序?是否有某种原因使您通过批处理文件而不是直接(尽管子流程
)运行后者?@martineau一旦windows应用程序完成其处理,它将等待用户输入关闭应用程序(请输入x或ESC关闭)@martineau没有具体原因。。。命令提示符无法找到我正在运行的应用程序,因为它是一个自定义的.exe fle/。。我想,我会将cd刻录到exe位置,然后运行应用程序。。。所以我的批处理文件只有两行代码。。1) 将目录更改为.exe位置2)使用一些命令行参数运行windows应用程序如果在批处理文件中或直接使用子进程执行.exe
-指定.exe的完整路径,则会找到它(如果存在)。您还可以指定参数,以便通过子流程
传递它,并根据需要使用stdin
和/或stdout
的i/o重定向。我理解。。但“x”或ESC不是输入命令行参数。。这些是流程完成后需要输入的关键输入。