os.system(“cmd”)和commands.getoutput(“cmd”)之间的区别......?

时间:2014-07-17 08:16:19

标签: python command-line output os.system

我正在尝试使用os.sytemcommands.getoutput使用python打印今天的日期。

我的代码是:

    import os, commands
print os.system("date +%Y%m%d%T") print commands.getoutput("date +%Y%m%d%T")

=========输出: - =============

案例1:

./test.py

第一份印刷声明的O / P: 2014071713:25:21 0
第二份印刷声明的O / P:
2014071713:25:21

案例2:
我尝试使用import pdb;pdb.set_trace()跟踪

    print os.system("date +%Y%m%d%T")
    (Pdb) n
    2014071713:25:21
    0
print commands.getoutput("date +%Y%m%d%T") (Pdb) n 2014071713:31:29 --Return--

为什么第一个print语句在{2} {}}}语句中附加0语句不会在print中附加任何内容,但会在case 1中附加--Return-- {1}}?

我知道python中有一些case 2模块,但我想知道为什么它会在输出中附加那些额外的字符串?

1 个答案:

答案 0 :(得分:2)

当您使用os.system时,返回值是被调用的命令return code。被调用命令的输出直接进入stdout

当您使用commands.getoutput时,正在捕获被调用的命令输出,而不是转到stdout。返回代码未显示。

测试差异的最简单方法是:

a = os.system("some command")
b = commands.getoutput("some command")
print "commands have run"
print "output of os.system:",a
print "output of commands.getoutput",b

请注意,commands模块已弃用。如上面的评论所述,您应该考虑使用子流程。