【问题标题】:how to run a .bat file in python? [duplicate]如何在 python 中运行 .bat 文件? [复制]
【发布时间】:2012-03-19 07:45:04
【问题描述】:

调用 python 'D:\chan.bat'

"python 语句集存储在记事本中并保存为 .bat 扩展名。 如何在 python 中运行这些语句。语法是什么?"

【问题讨论】:

  • 这里已经讨论过这个话题。[stackoverflow.com/questions/1818774/python-subprocess]
  • 你是说你有一个 Python 脚本(由 Python 语句组成)还是一个 shell 脚本(由命令行操作组成)?
  • 请澄清您的帖子。你的 .bat 文件是用什么语言编写的?

标签: python batch-file


【解决方案1】:

我认为这通常是使用subprocess 模块完成的:

from subprocess import call
call("D:\chan.bat")

但是,普通的call 不会给您返回太多信息。您可能需要Popen 对象的强大功能:

from subprocess import Popen
Popen("D:\chan.bat")

编辑: 您可能需要去掉单引号才能使其正常工作。

"'D:\chan.bat'" -> "D:\chan.bat"

【讨论】:

  • 使用'\\' 转义斜线。
  • 或使用原始字符串,方法是在字符串前面加上r 字符,如r'my string here'
【解决方案2】:

如果您不需要与脚本交互,这不可行吗?

import os
os.system("d:\\chan.bat")

【讨论】:

【解决方案3】:

我没有 Windows 盒子来测试它。

这是我在 Mac OS 上尝试的方法

Dinh-Phams-MacBook-Pro:tmp dinhpham$ cat > t.bat
print "abc" 
Dinh-Phams-MacBook-Pro:tmp dinhpham$  
Dinh-Phams-MacBook-Pro:tmp dinhpham$ python t.bat
abc

Python 解释器不关心 .py 扩展名

如果您想将 .bat 文件加载为 Python 模块,只需使用

imp.load_source(path_to_file)

【讨论】:

    【解决方案4】:

    可以将命令传递给python,如下所示:

    [avasal@avasal]$ python -c "print 'a' + 'b'"
    ab
    [avasal@avasal]$
    

    python --help 你可以看到-c cmd : program passed in as string (terminates option list),在你的批处理文件中,你可以使用这个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2016-05-29
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      相关资源
      最近更新 更多