Python执行windows cmd函数
我知道您可以使用子流程通过Python脚本运行Linux终端命令Python执行windows cmd函数,python,windows,function,command-line,Python,Windows,Function,Command Line,我知道您可以使用子流程通过Python脚本运行Linux终端命令 subprocess.call(['ls', '-l']) # for linux 但是我找不到在windows上做同样事情的方法 subprocess.call(['dir']) # for windows 使用Python而不进行大量修补是否可能 我应该坚持使用传统的批处理文件吗?dir不是一个文件,它是一个内部命令,因此shell关键字必须设置为True subprocess.call(["dir"
subprocess.call(['ls', '-l']) # for linux
但是我找不到在windows上做同样事情的方法
subprocess.call(['dir']) # for windows
使用Python而不进行大量修补是否可能
我应该坚持使用传统的批处理文件吗?dir不是一个文件,它是一个内部命令,因此shell关键字必须设置为True
subprocess.call(["dir"], shell=True)
几乎每个人的答案都是正确的,但似乎我可以使用os.popen做我需要的事情--
varStr=os.popen('dir/b*.py').read()
试试这个
import os
os.system("windows command")
例:日期
os.system("date")
首先,要获得目录列表,您应该使用。如果改为调用
dir
,则必须解析其输出以使用它,这是大量不必要的工作,而且容易出错
现在,
dir
是一个cmd.exe
内置命令,它不是一个独立的可执行文件cmd.exe
本身就是实现它的可执行文件
因此,您有两个选项(如果您需要获取输出而不仅仅是打印输出,请使用而不是check_call
):
- 使用
的cmd
开关(执行命令并退出):/C
- 使用
选项(通过系统shell执行命令行):shell=True
- 在第二种情况下,
将执行它通常会执行的任何shell转换(例如,将行拆分为参数、取消引用、环境变量扩展等)。所以特别是,如果它们碰巧包含任何空格和cmd
特殊字符和/或关键字cmd
使用“默认系统shell”(在Windows中通过shell=True
环境变量指向),因此如果用户重新定义了它,您的程序将异常运行COMSPEC
ipconfig
是一个Windows命令。这应该行得通(在我的电脑上也行)。为什么你不能在windows上做同样的事情呢?这是一个windows命令。另外,如果希望使用check\u output(“ipconfig”)
输出,可以使用shell=True
check\u output(“ipconfig”,shell=True)
一些Windows命令内置在shell中,例如dir
。您需要运行命令进程本身:'cmd.exe/c dir'
。编辑:或者按照@PadraicCunningham的建议去做。如果你只是想得到一个文件列表,你应该使用os.listdir
或者glob.glob
,而不是去做dir
。os.popen()
的文档说明:由于版本2.6,此函数已经过时。使用模块。特别检查该部分。
subprocess.check_call(['cmd','/c','dir','/s'])
subprocess.check_call('dir /s', shell=True)