首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用subprocess.call运行批处理文件不能工作,并冻结IPython控制台。

使用subprocess.call运行批处理文件不能工作,并冻结IPython控制台。
EN

Stack Overflow用户
提问于 2021-12-01 19:06:26
回答 3查看 1.1K关注 0票数 0

这是一个常见的问题,但阅读其他线程并没有解决我的问题。我提供完整的路径以确保我没有犯任何路径设置错误。

代码语言:javascript
运行
复制
import subprocess    
# create batch script
myBat = open(r'.\Test.bat','w+') # create file with writing access
myBat.write('''echo hello
pause''') # write commands to file
myBat.close()

现在我试着通过三种不同的方式运行它,发现它们都在这里。在每种情况下,我的IDE Spyder都会进入繁忙模式,控制台就会冻结。没有弹出终端窗口什么的什么都没发生。

代码语言:javascript
运行
复制
subprocess.call([r'C:\\Users\\felix\\folders\\Batch_Script\\Test.bat'], shell=True)


subprocess.Popen([r'C:\\Users\\felix\\folders\\Batch_Script\Test.bat'], creationflags=subprocess.CREATE_NEW_CONSOLE)


p = subprocess.Popen("Test.bat", cwd=r"C:\\Users\\felix\\folders\\Batch_Script\\")
stdout, stderr = p.communicate()

每个操作都使用和不使用shell=True设置,也有和不带原始字符串、单个反斜杠等等。你能看出为什么这个不起作用吗?

EN

Stack Overflow用户

发布于 2021-12-01 19:34:01

  1. 应该与open()一起使用..。

使用open(r'.\Test.bat','w+')作为myBat: myBat.write('echo hello\n‘)#file命令来文件

  1. I在ide之外测试了这一行(通过在cmd中运行),它将打开一个新的cmd窗口

creationflags=subprocess.CREATE_NEW_CONSOLE) subprocess.Popen(r'Test.bat‘)

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70189890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档