在下载csv文件时遇到问题

时间:2018-01-16 20:26:27

标签: python macos

所以我试图创建一个使用csv下载链接下载csv文件的函数,然后基本打印它将它划分为行,但是当我需要保存时我遇到了问题

def download_data(csv_url):
    response = request.urlopen(csv_url)
    csv = response.read()
    csv_str = str(csv)
    lines = csv_str.split("\\n")
    dest_url = r'data.csv'
    fx = open(dest_url, 'r')
    for line in lines:
      fx.write(line + '/n')
    fx.close()

当我给它csv链接时,它告诉我它找不到文件/目录“data.csv”,即使我应该下载它。 运行Mac os

1 个答案:

答案 0 :(得分:0)

您正在阅读该文件。将'r'中的fx = open(dest_url, 'r')更改为'w'

fx = open(dest_url, 'w')

作为旁注,你真的应该使用with statement。一旦代码离开with范围,with将使文件对象关闭连接。这样您就不必担心关闭连接。

def download_data(csv_url):
    response = request.urlopen(csv_url)
    with open('data.csv', 'w') as f:
        f.write(str(response.read()))

如果您只是想要阅读并在屏幕上显示内容,那么根本不需要保存文件。只需download_data返回csv_str

最后看看内置csv module。它让生活变得轻松。

import csv
from io import StringIO
import requests


def download_data(csv_url):
    return csv.reader(
        StringIO(
            requests.get(csv_url)
                    .text
        ), delimiter=','
    )

for row in download_data('https://people.sc.fsu.edu/~jburkardt/data/csv/addresses.csv'):
    print("| {} |".format(str(' | '.join(row))))

# Prints:
#
# | John | Doe | 120 jefferson st. | Riverside |  NJ |  08075 |
# | Jack | McGinnis | 220 hobo Av. | Phila |  PA | 09119 |
# | John "Da Man" | Repici | 120 Jefferson St. | Riverside |  NJ | 08075 |
# | Stephen | Tyler | 7452 Terrace "At the Plaza" road | SomeTown | SD |  91234 |
# |  | Blankman |  | SomeTown |  SD |  00298 |
# | Joan "the bone", Anne | Jet | 9th, at Terrace plc | Desert City | CO | 00123 |