Томаса является правильным, но я чувствую себя более объяснение необходимо.
Я всегда .decode('utf8')
результат p.communicate()
или check_output()
и др. Это связано с тем, что stdout/stdin всегда открывается в двоичном режиме, если вы явно не указали дескриптор файла, поэтому вы всегда получаете/отправляете байты, а не str.
В этом случае, я предлагаю просто использовать check_output(['date','+%m/%d/%y'])
вместо создания объекта POPEN который затем в основном выбросить :)
Итак, я хотел бы предложить переписывания это:
import subprocess
result = subprocess.check_output(['date', '+%m/%d/%y']).decode('utf8').rstrip()
print (result)
На более meta level, возникает вопрос, нужно ли вам использовать subprocess
для выполнения этой задачи. В конце концов, для форматирования дат/времени существует time.strftime()
. Это:
import time
print(time.strftime('%m/%d/%y'))
достигает целевого эффекта всей вашей программы в гораздо более простом виде
Кроме того, из tink 's комментарий:.
import datetime
print datetime.date.today().strftime('%m/%d/%y')
Рассматривали ли вы с помощью ** импорта DateTime ** ** печать datetime.date.today() STRFTIME (' % м /% d /% г») **? Просто говоря ... – tink
@tink: Есть ли какое-то определенное значение для использования 'datetime' в отличие от' time' в этом случае? Это кажется более сложным. – kampu
@tink спасибо. работал на меня. – 2013-05-14 07:18:16