繁体   English   中英

在下载csv文件时遇到问题

[英]having problems downloading a csv file

所以我试图做一个功能,使用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

您正在读取文件。 改变'r'fx = open(dest_url, 'r')'w'

fx = open(dest_url, 'w')

附带说明一下,您确实应该使用with语句 一旦代码离开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模块 它使生活变得轻松。

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 |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM