这些是我的python代码:
import subprocess
subprocess.check_output("ls",shell=True,stderr=subprocess.STDOUT)
import subprocess
subprocess.check_output("yum",shell=True,stderr=subprocess.STDOUT)
Run Code Online (Sandbox Code Playgroud)
第一次工作顺利,但第二次回归:
Traceback (most recent call last):
File "/usr/lib/x86_64-linux-gnu/gedit/plugins/pythonconsole/console.py", line 378, in __run
r = eval(command, self.namespace, self.namespace)
File "<string>", line 1, in <module>
File "/usr/lib/python3.4/subprocess.py", line 616, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command 'yum' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)
为什么会这样?是因为ls是原始shell命令,但是yum是新包吗?如何解决这个问题呢?
我正在尝试运行此 aws s3 ls 命令:
aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize
Run Code Online (Sandbox Code Playgroud)
用这个蟒蛇:
command = 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize'
s3_folder_data = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
print s3_folder_data
Run Code Online (Sandbox Code Playgroud)
但它因以下错误而失败:
subprocess.CalledProcessError: Command 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)
当我运行该命令时,该命令本身会起作用。python 脚本由同一台计算机上的同一用户调用。是什么赋予了?