我编写了一个在linux中设置系统时间的函数。我写下一段代码:
import time
import subprocess
def SetSystemTime(val):
try:
val = float(val)
except ValueError:
return
command = 'date -s"' + time.ctime(val) + '"'
subprocess.call(command)
在调用我得到的时候:
文件“crc.py”,第96行,in SetSystemTime(0) 在SetSystemTime中输入“crc.py”,第12行 subprocess.call(命令) 在调用中文件“/usr/lib/python2.7/subprocess.py”,第493行 返回Popen(* popenargs,** kwargs).wait() 文件“/usr/lib/python2.7/subprocess.py”,第679行, init errread,errwrite) 文件“/usr/lib/python2.7/subprocess.py”,第1239行,在_execute_child中 提出child_exception OSError:[Errno 2]没有这样的文件或目录
答案 0 :(得分:1)
subprocess.call()通常将字符串列表作为其第一个参数。如果你把它交给一个字符串X(正如你所做的那样),那一个将被转换为list,整个字符串作为它的第一个参数。 该列表的第一个元素以该列表的其余部分作为参数执行。 因此底层操作系统尝试执行可执行文件'date -s“XXYYXXZ”'并且无法找到它。
这与os.system()不同,os.system()将参数传递给shell,shell通常会拆分它在空格处获得的字符串,然后执行拆分的第一个元素。
尝试:
command = ['date', '-s"' + time.ctime(val) + '"']
subprocess.call(command)
作为最后两行。