Неявный оператор?

Когда я впервые начал использовать некоторые методы подпроцесса, я столкнулся с некоторыми из тех же проблем.

Попробуйте запустить свой код следующим образом:

import datetime
import subprocess
import shlex

startdate = datetime.datetime(2010, 4, 9) + datetime.timedelta(days=1)
enddate = datetime.datetime(2010, 4, 10) + datetime.timedelta(days=1)
command = (
    "sudo mam-list-usagerecords -s "
    + str(startdate)
    + "-e"
    + str(enddate)
    + " --format csv --full"
)

print(command)
print(type(command))
print(shlex.split(command))
subprocess.call(shlex.split(command))

ВЫХОД:

sudo mam-list-userecords -s 2010-04-10 00: 00: 00-e2010 -04-11 00:00:00 --format csv --full

class 'str'

['sudo', 'mam-list-userecords', '-s', '2010-04-10', '00: 00: 00-e2010-04-11 ', '00: 00: 00', '--format', 'csv', '--full']

(Выход команды отредактирован.)

Когда kwarg shell установлен на False, что является значением по умолчанию, команда может быть коллекцией, которая является shlex .split делает.

аргументы должны быть последовательностью программных аргументов или одной строкой. По умолчанию программа для выполнения является первым элементом в args, если args - последовательность. Если args является строкой, интерпретация зависит от платформы и описана ниже. См. Shell и исполняемые аргументы для дополнительных отличий от поведения по умолчанию. Если не указано иное, рекомендуется передавать аргументы в виде последовательности.

blockquote>

Конструктор Popen

Эта проблема беспрестанно смущала меня, пока я не нашел это в документации.

5
задан Mehrdad Afshari 8 May 2009 в 20:17
поделиться