2015-06-10 69 views
2

我對Python稍微陌生,並且有一個問題,爲什麼下面的代碼不會在csv文件中產生任何輸出。代碼如下:嘗試使用CSV文件從URL下載數據

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) 

乾杯。

編輯

奧布萊恩和阿爾伯特解決了初始發行我。但是,我現在還有一個問題。當我將零票息「利率 - 分析系列 - 2009年至當前 - F17」下的「http://www.rba.gov.au/statistics/tables/#interest-rates」中列出的上面列出的CSV文件下載並且是F-17收益CSV時,我發現它有5個工作簿,我其實只是想收集第5工作簿中的數據。有沒有辦法做到這一點?乾杯。

+1

你應該看看使用的,而不是urllib2的 –

回答

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) 
+0

對不起。對於我最初的問題,我實際上還有一個要求。我編輯了原來的問題來包含這一點。 – Jojo

+0

在這一點上,我會爲它創建一個新的問題。我不認爲除了我以外,任何人都會看到這個問題,因爲這個問題已經過時並被標記爲完整。我不確定是否有辦法做到你所要求的。 – Brien

3

這可能是因爲你的開放模式。

根據documentation

'w' 表示只寫(已有的文件具有相同的名稱將被 擦除)

您應該使用的append(a)模式追加它到文件的末尾。

'a'打開要附加的文件;任何寫入該文件的數據都會自動添加到末尾 。

此外,由於您嘗試下載的文件是csv文件,因此無需將其轉換。

+0

[** **請求(http://docs.python-requests.org/en/latest/)我改成了'開放(「AusCentralbank .csv「,」wb「)作爲f',但我仍然沒有得到CSV文件中的任何輸出。你知道這可能是爲什麼嗎? – Jojo

+0

您在設置程序的方式上遇到了一些問題。請參閱我的或@ albert的回答,以獲得更完整的做事方式。 – Brien

+0

您爲輸入的每一行重新打開(即銷燬)您的輸出文件。你最終可能會排空...... – alexis

6

我只能用Python 3測試我的代碼。但是,唯一的區別應該是urllib2,因此我使用urllib.respose來打開所需的url。

變量htmlbytes類型,通常可以以二進制模式寫入文件。此外,您的源是一個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) 
+0

非常感謝你的回答。我對最初的問題做了補充,並想知道我能否得到你的幫助。謝謝 – Jojo

+0

請開一個新的問題,因爲這不是一個論壇,而是一個問答平臺。請記住提供您遇到問題的數據的鏈接。但是,我在csv文件(http://www.rba.gov.au/statistics/tables/csv/f17-yields.csv)中找不到上述五個工作簿。 Excel文件有四個工作簿,其中包含這三個csv文件和附加註釋的數據。 – albert