【问题标题】:Problem opening a txt file from an external url [duplicate]从外部 url 打开 txt 文件时出现问题 [重复]
【发布时间】:2020-01-14 17:00:55
【问题描述】:

我无法从外部 URL 打开 txt 文件。 从我的 PC 读取下载的 txt 文件时,下面的代码可以正常工作,例如

URL='grst0120.txt'

但如果我尝试从像

这样的外部站点读取相同的 txt 文件,它就不起作用
URL='https://downloads.usda.library.cornell.edu/usda-esmis/files/xg94hp534/0c4841048/8w32rn389/grst0120.txt'

下面的代码从 USDA 网站打开一个 txt 文件,并打印所有带有单词 "December" 的行。从我的 PC 打开下载的 txt 文件时,该代码工作正常,但我需要另一种方法从 Internet 打开相同的文件。我很感激任何帮助。 代码...

import re

URL = "https://downloads.usda.library.cornell.edu/usda-esmis/files/xg94hp534/0c4841048/8w32rn389/grst0120.txt"

# The code fails with this external URL but it works fine if I download the txt file and 
# I change the URL pointing to my PC location, like, URL = "grst0120.txt". 

Stocks = []
LineNum = 0
pattern = re.compile("December", re.IGNORECASE)

with open (URL, 'rt') as myfile:
    for line in myfile:
        LineNum += 1
        if pattern.search(line) != None:
            Stocks.append((LineNum, line.rstrip('\n')))
for Stocks_found in Stocks:
    print("Line " + str(Stocks_found[0]) + ": " + Stocks_found[1])

【问题讨论】:

  • open() 不接受外部 URL。
  • 听说过 urllib 吗?

标签: python file


【解决方案1】:

open() 不接受 URL,而只接受本地文件的路径。对于 Python 3.x,您可以改用 urllib

import urllib.request

URL = "https://downloads.usda.library.cornell.edu/usda-esmis/files/xg94hp534/0c4841048/8w32rn389/grst0120.txt"

data = urllib.request.urlopen(URL)

for line in data:
    print(line) 

【讨论】:

    【解决方案2】:

    我可以看到的一种方法是使用 urllib 模块将文本文件下载到文件夹,然后从那里打开它。

    https://stackabuse.com/download-files-with-python/
    

    该站点上很好地解释了 urllib 的使用。 虽然我敢肯定,有一种更有效的方式来执行您的任务,这可能是一种方式。

    【讨论】:

    • 谢谢。我认为这是最好的选择。先下载再看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多