何らかの理由で、自宅のコンピューターで職場のコンピューターと同じアカウントにログインできません。
Bo10 のコードを動作させることができましたが、abernert のコードを動作させることができませんでした。その理由を本当に理解したいと思います。
abernert のコードに対する私の更新は次のとおりです。
import csv
import sys
import json
import urllib2
j = urllib2.urlopen('https://citibikenyc.com/stations/json')
js = json.load(j)
citi = js['stationBeanList']
columns = ('stationName', 'totalDocks', 'availableDocks',
'latitude', 'longitude', 'availableBikes')
stations = (operator.itemgetter(columns)(station) for station in citi)
with open('output.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file)
csv_file.writerows(stations)
I thought adding this line `csv_writer = csv.writer(csv_file)` would fix the object has no attirbute error, but I am still getting it. This is the actual error:
Andrews-MacBook:coding Andrew$ python citibike1.py
Traceback (most recent call last):
File "citibike1.py", line 17, in <module>
csv_file.writerows(stations)
AttributeError: 'file' object has no attribute 'writerows'
コードをこれに変更すると、出力は列の名前を 322 回繰り返すだけです。このエラーが発生していたため、14行目で変更しました:
Traceback (most recent call last):
File "citibike1.py", line 17, in <module>
csv_writer.writerows(stations)
File "citibike1.py", line 13, in <genexpr>
stations = (operator.itemgetter(columns)(station) for station in citi)
NameError: global name 'operator' is not defined:
import csv
import sys
import json
import urllib2
import operator
j = urllib2.urlopen('https://citibikenyc.com/stations/json')
js = json.load(j)
citi = js['stationBeanList']
columns = ('stationName', 'totalDocks', 'availableDocks',
'latitude', 'longitude', 'availableBikes')
stations = (operator.itemgetter(0,1,2,3,4,5)(columns) for station in citi)
with open('output.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerows(stations)