Ошибка времени установки Python2 - PullRequest
0 голосов
/ 29 марта 2012

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

1 Ответ

1 голос
/ 08 мая 2012

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

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

Попытка:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...