Ошибка установки времени Python2

Я пишу функцию, которая устанавливает системное время в 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, в SetSystemTime(0) Файл "crc.py", строка 12, в SetSystemTime subprocess.call(command) Файл "/usr/lib/python2.7/subprocess.py", строка 493, при вызове return Popen(*popenargs, **kwargs).wait() Файл "/usr/lib/python2.7/subprocess.py", строка 679, в init errread, errwrite) Файл «/usr/lib/python2.7/subprocess.py», строка 1239, в _execute_child поднять дочернее исключение OSError: [Errno 2] Нет такого файла или каталога


person Xaver    schedule 29.03.2012    source источник


Ответы (1)


subprocess.call() обычно принимает список строк в качестве первого аргумента. Если вы передадите ему строку X (как вы это делаете), она будет преобразована в список со всей этой строкой в ​​качестве первого аргумента. Первый элемент этого списка выполняется с остальной частью этого списка в качестве аргументов. Таким образом, базовая ОС пытается выполнить исполняемый файл date -s "XXYYXXZ" и не может его найти.

Это отличается от os.system(), которая передает параметр оболочке, которая чаще всего разбивает полученную строку на пробелы, а затем выполняет первый отщепленный элемент.

Пытаться:

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

как последние две строки.

person Anthon    schedule 08.05.2012