如何使用';操作系统(';命令';)';在python中使用CMD

如何使用';操作系统(';命令';)';在python中使用CMD,python,python-3.x,Python,Python 3.x,是否可以使用python中的os.system()发送相关命令列表?我的意思是,如果我想将当前目录更改为一个特定目录,然后有一个目录列表,我该怎么做?(我不想使用dir“path”-我想同时更改当前目录和列出目录) 注意:这只是一个示例,我想知道如何发送多个命令!(一行中的一些相关命令) 注意:Python 3.2在这里不需要系统调用。函数和将更改当前目录,并分别列出目录中的文件。查看os.listdir(路径): 例如: import os entries = os.list.dir('/

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

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


注意:Python 3.2在这里不需要系统调用。函数和将更改当前目录,并分别列出目录中的文件。

查看os.listdir(路径):

例如:

import os

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

系统使用本地系统外壳。您可以在许多unixy壳上按照@rWang的建议执行此操作,但在其他地方(如窗口)则不行。更好的选项是subprocess.call和cwd(当前工作目录)参数

正如其他人所提到的,如果您真正想做的就是获得一个文件列表,那么existin 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'

不确定它是否在Windows上工作,但在*nix上,您可以使用os.system(“cd/path/to/where;dir”)-只需在命令之间加一个分号即可。在Windows中,您可以使用
&
实现相同的目的。此命令将列出主目录的内容,并暂停,直到按Enter键
os.system(r'cd%USERPROFILE%&dir&pause>nul')
我认为人们一开始会避开子进程Popen,但一旦掌握了窍门,他们就消除了在Python中使用本地操作系统的大部分压力。快速、可移植的SQL工作就是一个例子。处理从尝试的shell命令返回的错误是另一个问题。亲爱的tdelaney,您的代码在Python 2.7中运行良好,但在Python 3.4中收到错误(我已经将最后一行更改为
print('done')
)。我收到此错误:
>>>回溯(最近一次调用):文件“C:/Users/ghasim.IT/Desktop/pypypy.py”,第7行,在“”)中。类型错误:“str”不支持缓冲区接口>>
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'