关于python 2.7:Python2设置时间错误

Python2 setting time error

我编写了一个在Linux中设置系统时间的函数。我写下一个代码:

1
2
3
4
5
6
7
8
9
10
import time
import subprocess

def SetSystemTime(val):        
    try:
        val = float(val)
    except ValueError:
        return
    command = 'date -s"' + time.ctime(val) + '"'
    subprocess.call(command)

当我接到这个电话时:

File"crc.py", line 96, in
SetSystemTime(0)
File"crc.py", line 12, in SetSystemTime
subprocess.call(command)
File"/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File"/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File"/usr/lib/python2.7/subprocess.py", line 1239, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory


call()通常将字符串列表作为其第一个参数。如果您给它一个字符串x(如您所做的那样),那么这个字符串将被转换为以整个字符串作为第一个参数的列表。该列表的第一个元素与该列表的其余元素一起作为参数执行。因此,底层操作系统试图执行可执行文件'date-s"XXYYXXZ",但找不到它。

这与os.system()不同,后者将参数传递给一个shell,该shell通常在空格处拆分它得到的字符串,然后执行第一个被拆分的元素。

尝试:

1
2
command = ['date', '-s"' + time.ctime(val) + '"']
subprocess.call(command)

最后两行。