2016-03-06 78 views
0

我已经为git日志中的提交日期创建了一个日期变量,但我不知道如何将此日期转换为Python中的星期数。我只是不理解如何在python中创建一个函数,该函数将创建一个新的变量,其值可以在另一个变量上绘制。以下是我的代码 - 正如您将看到的,我为提交日期创建了一个变量,并且我想使用该日期查找星期编号。我想为每个提交日期执行此操作,然后打印结果以便我可以查看它们。Python-使用git日志输出写入函数

import git 
g = git.Git("dir_repo") 
loginfo = g.log('--since=2015-03-01', '--date=short', '--pretty=%cn %cd') 

datecom=g.log('--since=2015-03-01', '--date=short','--pretty=%cd') 

import datetime 

def week(): 
    return datetime.isocalendar(); 
weeknum=week(); 

print week(datecom) 

我收到以下错误:

$ python test23.py 
Traceback (most recent call last): 
    File "test23.py", line 13, in <module> 
    weeknum=week(); 
    File "test23.py", line 12, in week 
    return datetime.isocalendar(); 
AttributeError: 'module' object has no attribute 'isocalendar' 

回答

0

您的代码对不同部分的问题:

  1. datecom是你的情况是所有日期字符串的unicode字符串,所以你必须先将它分成单独的日期字符串,然后将它们转换为datetime.date对象。
  2. isocalendar()作用于datetime.date对象并返回一个3元组(ISO year, ISO week number, ISO weekday),其中您显然只对周数感兴趣。

你可以做这样的事情:

import git 
import datetime 

g = git.Git("path/to/git/repo") 
loginfo = g.log('--since=2015-03-01', '--date=short', '--pretty=%cn %cd') 
datecom = g.log('--since=2015-03-01', '--date=short','--pretty=%cd') 

date_list = [datetime.datetime.strptime(date_str, '%Y-%m-%d').date() 
      for date_str in datecom.split('\n')] 


def week(date_obj): 
    _, week_nr, _ = date_obj.isocalendar() 
    return week_nr 

for date in date_list: 
    print("{date} (week number: {week_nr})".format(date=date, 
                week_nr=week(date)))