我正在使用 pysvn 从 subversion 日志历史记录(作者、日期、时间、修订版)中提取 svn 日志信息。我在下面使用的代码:

client = pysvn.Client()
client.callback_get_login
commit_messages = client.log("url")
log_list = []
for i, commit in enumerate(commit_messages):
    rev = commit.revision
    auth = commit.author
    t = time.ctime(commit.date)
    mess = commit.message
    log_list.append(rev)
    log_list.append(auth)
    log_list.append(t)
    log_list.append(mess)
log_file = open("extracted_log_history",'wb')
wr = csv.writer(log_file, dialect = 'excel')
for item in log_list:
    wr.writerows(item)

我发现这无法返回以下 TypeError: writerows() argument must be iterable 。我相信它是不可迭代的,因为 rev = commit.revision 正在返回 <type 'revision'> 并且其他变量(auth、t、mess)都是 <type 'str'> 。关于如何使修订号“可迭代”的任何想法?

最佳答案

<type 'revision'> 意味着你有一个 pysvn.Revision instance 。如果你想写修订号,使用它的 revision.number 属性。

但是,您的代码还有其他问题。您将所有列作为单独的行添加到 log_list 中,而不是作为一列,并且您试图将每一行作为一系列行写入 CSV。不要使用 csv.writerows() ,并在处理修订时写入行:

client = pysvn.Client()
client.callback_get_login
with open("extracted_log_history",'wb') as log_file:
    wr = csv.writer(log_file)
    for commit in client.log("url"):
        rev = commit.revision.number
        auth = commit.author
        t = time.ctime(commit.date)
        mess = commit.message
        row = [rev, auth, t, mess]
        wr.writerow(row)

关于python - 在 python 中什么是 <type 'revision' >,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34680330/

10-12 21:47