我对Python稍微有点新,并且对于为什么以下代码不会在csv
文件中产生任何输出有疑问。代码如下:
import csv
import urllib2
url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'
response = urllib2.urlopen(url)
cr = csv.reader(response)
for row in cr:
with open("AusCentralbank.csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(row)
干杯。
修改:
布朗和艾伯特解决了我的初始问题。但是,我现在还有一个问题。当我下载上面列出的CSV文件时,该文件位于" http://www.rba.gov.au/statistics/tables/#interest-rates"零利率和#34;利率 - 分析系列 - 2009年到现在 - F17"并且是F-17 Yields CSV我看到它有5个工作簿,我实际上只想收集第5工作簿中的数据。有没有办法可以做到这一点?欢呼声。答案 0 :(得分:7)
我只能使用Python 3测试我的代码。但是,唯一的差异应该是urllib2
,因此我使用urllib.respose
来打开所需的网址。
变量html
是类型bytes
,通常可以以二进制模式写入文件。另外,你的源代码已经是一个csv文件了,所以不需要以某种方式转换它:
#!/usr/bin/env python3
# coding: utf-8
import urllib
url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'
response = urllib.request.urlopen(url)
html = response.read()
with open('output.csv', 'wb') as f:
f.write(html)
答案 1 :(得分:3)
这可能是因为你的开场模式。
' W'仅用于写入(具有相同名称的现有文件) 擦除)
您应该使用追加(a
)模式将其附加到文件的末尾。
'一个'打开要追加的文件;写入文件的任何数据都是 自动添加到最后。
此外,由于您尝试下载的文件是csv文件,因此您无需转换它。
答案 2 :(得分:1)
import urllib2
url = 'http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv'
response = urllib2.urlopen(url)
html = response.read()
with open('AusCentralbank.csv', 'wb') as f:
f.write(html)