尝试使用CSV文件

时间:2015-06-10 16:29:05

标签: python

我对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工作簿中的数据。有没有办法可以做到这一点?欢呼声。

3 个答案:

答案 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)

这可能是因为你的开场模式。

根据documentation

  

' W'仅用于写入(具有相同名称的现有文件)   擦除)

您应该使用追加(a)模式将其附加到文件的末尾。

  

'一个'打开要追加的文件;写入文件的任何数据都是   自动添加到最后。

此外,由于您尝试下载的文件是csv文件,因此您无需转换它。

答案 2 :(得分:1)

@albert得到了很好的答案。我已经将它转换为等效的Python 2.x代码。你在原来的程序中做了太多的工作;由于该文件已经是csv,因此您无需进行任何特殊工作即可将其转换为csv。

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)