【发布时间】:2015-09-08 03:16:31
【问题描述】:
我有一些 Python 代码列出了 Github 中的拉取请求。如果我将解析的 json 输出打印到控制台,我会得到预期的结果,但是当我将解析的 json 输出到 csv 文件时,我不会得到相同的结果。他们在第六个结果之后被切断(并且会有所不同)。
我想要做的是每次都用最新的输出覆盖 csv。
另外,我正在处理使用 unicodecsv 的 unicode 输出。我不知道这是否会导致 csv 输出关闭。
我将使用 print 语句和 csv 代码列出相关代码的两个实例。
感谢您的帮助。
import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)
import csv
import unicodecsv
for pr in result:
data = pr.as_dict()
changes = (gh.repository('my-repo', repo).pull_request(data['number'])).as_dict()
if changes['commits'] == 1 and changes['changed_files'] == 1:
#keep print to console for testing purposes
print "Login: " + changes['user']['login'] + '\n' + "Title: " + changes['title'] + '\n' + "Changed Files: " + str(changes['changed_files']) + '\n' + "Commits: " + str(changes['commits']) + '\n'
使用 csv:
import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)
import csv
import unicodecsv
for pr in result:
data = pr.as_dict()
changes = (gh.repository('my-repo', repo).pull_request(data['number'])).as_dict()
if changes['commits'] == 1 and changes['changed_files'] == 1:
with open('c:\pull.csv', 'r+') as f:
csv_writer = unicodecsv.writer(f, encoding='utf-8')
csv_writer.writerow(['Login', 'Title', 'Changed files', 'Commits'])
for i in changes['user']['login'], changes['title'], str(changes['changed_files']), str(changes['commits']) :
csv_writer.writerow([changes['user']['login'], changes['title'],changes['changed_files'], changes['commits']])
【问题讨论】:
标签: python json python-2.7 csv