我正在尝试使用os.sytem
和commands.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
模块,但我想知道为什么它会在输出中附加那些额外的字符串?
答案 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
模块已弃用。如上面的评论所述,您应该考虑使用子流程。