python - 如何在 Windows 中使用子进程

标签 python windows subprocess pipe

我试图将结果或函数 runcmd 保存在变量 Result 中。 这是我尝试过的: 导入子进程

def runcmd(cmd):
  x = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  Result = x.communicate(stdout)
  return Result
runcmd("dir")

当我运行这些代码时,我得到了这个结果:

Traceback (most recent call last):
  File "C:\Python27\MyPython\MyCode.py", line 7, in <module>
    runcmd("dir")
  File "C:\Python27\MyPython\MyCode.py", line 4, in runcmd
    x = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

我该怎么做才能解决这个问题?

最佳答案

我想你要找的是 os.listdir()

查看 os module了解更多信息

一个例子:

>>> import os
>>> l = os.listdir()
>>> print (l)
['DLLs', 'Doc', 'google-python-exercises', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.e
xe', 'README.txt', 'tcl', 'Tools', 'VS2010Cmd.lnk']
>>>

您还可以将输出读入列表:

result = []
process = subprocess.Popen('dir', 
    shell=True, 
    stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE )
for line in process.stdout:
    result.append(line)
errcode = process.returncode
for line in result:
    print(line)

关于python - 如何在 Windows 中使用子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819417/

相关文章:

windows - 在 Powershell 中更改文件扩展名大小写

.net - 为要连接的 Windows Phone 7 应用程序构建服务的最佳可扩展架构是什么?

python - 可执行文件失败时从subprocess.Popen()捕获错误

Python 和子进程 - 以用户身份打开终端 session 并执行一个/两个命令

Windows 卷影复制错误 : 2155348129

python - 在 python 中以编程方式执行和终止长时间运行的批处理

python - 正则表达式结果

python - Django 在注释中使用组进行计数

python - for循环中的比较运算符

python - 删除 Pandas 中索引未唯一标识的行