2012-03-29 63 views
0

我編寫了一個在linux中設置系統時間的函數。我寫下面的代碼:Python2設置時間錯誤

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

回答

1

subprocess.call()一般需要字符串作爲其第一個參數列表。如果你把它交給一個字符串X(如你所做的那樣),那麼這個字符串將被轉換爲帶有整個字符串的列表作爲它的第一個參數。 該列表的第一個元素以該列表的其餘部分作爲參數執行。 因此,底層操作系統嘗試執行可執行文件'date -s「XXYYXXZ」',並找不到它。

這與os.system()不同,它將參數傳遞給一個shell,最常將它在空間處分割的字符串分開,然後執行第一個拆分的元素。

嘗試:

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

的最後兩行。