我对蟒蛇还不熟悉。如果太简单的话请原谅我。我只想使用python中的date命令提取日期

import subprocess

p = subprocess.Popen(["date", '+%m/%d/%y'], stdout=subprocess.PIPE)

output,err = p.communicate()

print (output)

现在正在打印
b'05/14/13\n'

如何在开始时删除不必要的“\n”和b

最佳答案

托马斯的回答是正确的,但我觉得有必要作更多的解释。
我总是.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)

在更高的元级别上,有一个问题是您是否需要使用subprocess来完成此任务。
毕竟,格式化日期/时间的方法是time.strftime()。这:
import time
print(time.strftime('%m/%d/%y'))

以更简单的方式实现整个程序的预期效果。
同样来自tink的评论:
 import datetime
 print datetime.date.today().strftime('%m/%d/%y')

10-07 19:30