我有一个脚本,我只需要以最后一个git commit的2015-07-28
格式检索日期。
但如果我获得git log -1 --pretty=format:"%ci"
,则在终端中使用Tue Jul 28 16:23:24 2015 +0530
,那么如果我正在尝试
将此字符串传递给subprocess.Popen
,如
subprocess.Popen('git log -1 --pretty=format:"%cd"' shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE))
但是这会抛出我的错误TypeError: %c requires int or char
,我猜python的事情是我们将char传递给%c,而这是为了使用git命令获取日期。
我需要将此日期连接到我的python脚本的字符串。
答案 0 :(得分:1)
代码遗失,
,还有一个额外的)
:
proc = subprocess.Popen(
'git log -1 --pretty=format:"%cd"',
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = proc.stdout.read()
proc.wait()
获取命令的输出后,您可以使用datetime.datetime.strptime
将字符串转换为datetime
对象,并使用datetime.datetime.strftime
将其转换为您喜欢的格式:
import datetime
dt = datetime.datetime.strptime(output.rsplit(None, 1)[0], '%a %b %d %H:%M:%S %Y')
print(output)
print(dt.strftime('%Y-%m-%d'))
答案 1 :(得分:0)
错误消息与您的代码不符:相关代码会生成SyntaxError
,而不是TypeError
。
您不需要shell=True
。要获得git的输出,可以使用subprocess.check_output()
function:
from subprocess import check_output
date_string = check_output('git log -1 --pretty=format:"%ci"'.split()).decode()