如何使用'os.system('command')'将命令列表发送到python中的CMD

时间:2014-09-05 16:18:27

标签: python python-3.x

是否可以在python中使用os.system()发送相关命令列表?我的意思是,如果我想将当前目录更改为特定目录,然后有一个内容列表,我该怎么办? (我不想使用dir "path" - 我想同时更改当前目录,并列出目录)

注意:这只是一个例子,我想知道如何发送多个命令! (连续的一些相关命令)

注意:Python 3.2

3 个答案:

答案 0 :(得分:3)

os.system使用本地系统shell。你可以这样做,因为@Rwaing建议使用许多unixy shell而不是像windows这样的其他地方。更好的选择是subprocess.call和cwd(当前工作目录)param

import subprocess
subprocess.call('dir', shell=True, cwd='somepath')

正如其他人所提到的,如果您真正想做的就是获取文件列表,那么现存的python api就可以做得很好。

修改发送多个命令

发送多个命令的一种方法是将它们泵入子shell的stdin。它的shell依赖,但这是一个Windows示例:

import os
import subprocess as subp
p=subp.Popen('cmd.exe', shell=True, stdin=subp.PIPE)
p.stdin.write("""dir
cd "\\program files"
dir
""")
p.stdin.write('exit' + os.linesep)
p.wait()
del p
print 'done'

答案 1 :(得分:2)

此处无需系统调用。 os函数chdirlistdir将更改当前目录并分别列出目录中的文件。

答案 2 :(得分:2)

看一下os.listdir(path): https://docs.python.org/3/library/os.html#os.listdir

示例:

import os

entries = os.list.dir('/home/foo')