命令与子进程

ama*_*ain 4 python subprocess

只是想知道是否有人能告诉我原因

import subprocess, commands

p=subprocess.Popen(["ls", "*00080"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output=p.communicate()[0]
print "o", output
result=commands.getoutput("ls *00080")
print "o", result
Run Code Online (Sandbox Code Playgroud)

给出输出:

o ls: cannot access *00080: No such file or directory

o 010.010.013.165.42974-010.010.013.164.00080
Run Code Online (Sandbox Code Playgroud)

两者都应该找不到它们的文件?

一个

mgi*_*son 10

commandsspaws一个用于进行glob扩展的shell. subprocess除非你通过,否则不会产生一个shell shell = True.

换一种说法:

p=subprocess.Popen("ls *00080",shell=True,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
Run Code Online (Sandbox Code Playgroud)

应该做同样的事情commands.