将 .tar.gz 文件的内容从网站读取到 python 3.x 对象中

2023-11-29

我是Python新手。当尝试将 .tar.gz 文件的内容读入 python 时,我无法弄清楚我做错了什么。我想要阅读的 tar 文件托管在以下网址:

ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz

此站点上有更多信息(只是为了让您可以信任内容)http://www.pubmedcentral.nih.gov/utils/oa/oa.fcgi?id=PMC13901

tar 文件包含期刊文章的 .pdf 和 .nxml 副本。还有一些图像文件。

如果我通过复制和粘贴在浏览器中打开文件。我可以保存到 PC 上的某个位置,然后使用以下命令导入 tar 文件(注意:当我保存到该位置时,winzip 会将文件从 .tar.gz 更改为简单的 .tar):

import tarfile
thetarfile = "C:/Users/dfcm/Documents/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar"
tfile = tarfile.open(thetarfile)
tfile

但是,如果我尝试使用类似的命令直接访问该文件:

thetarfile = "ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz"
bbb = tarfile.open(thetarfile)

这会导致以下错误:

 Traceback (most recent call last):
 File "<pyshell#137>", line 1, in <module>
 bbb = tarfile.open(thetarfile)
 File "C:\Python30\lib\tarfile.py", line 1625, in open
 return func(name, "r", fileobj, **kwargs)
 File "C:\Python30\lib\tarfile.py", line 1687, in gzopen
 fileobj = bltn_open(name, mode + "b")
 File "C:\Python30\lib\io.py", line 278, in __new__
 return open(*args, **kwargs)
 File "C:\Python30\lib\io.py", line 222, in open
 closefd)
 File "C:\Python30\lib\io.py", line 615, in __init__
 _fileio._FileIO.__init__(self, name, mode, closefd)
 IOError: [Errno 22] Invalid     argument: 'ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar'

谁能解释我在尝试直接从网址读取 .tar.gz 文件时做错了什么?提前致谢。克里斯


不幸的是,您不能只从网络打开文件。这里的情况有点复杂。您必须指示解释器创建网络请求并创建表示请求状态的对象。这可以使用以下方法完成urllib module.

import urllib.request
import tarfile
thetarfile = "ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz"
ftpstream = urllib.request.urlopen(thetarfile)
thetarfile = tarfile.open(fileobj=ftpstream, mode="r|gz")

The ftpstreamobject 是一个类文件,表示与 ftp 服务器的连接。然后 tarfile 模块就可以访问这个流。由于我们不传递文件名,因此我们必须在mode范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 .tar.gz 文件的内容从网站读取到 python 3.x 对象中 的相关文章

随机推荐

  • Android Studio:Drawable 文件夹:如何放置多个 dpi 的图像?

    Hi 根据android文档drawable文件夹需要有多个子目录 用于存放不同dpi的图像 然而 在 Android Studio 中 在可绘制文件夹中创建任何子目录都会导致它根本无法检测到任何图像 另一方面 如果图像直接放置在可绘制文件
  • 多个春季批量作业

    我在 Spring Boot 中使用 Scheduled 注释来触发多个作业 以下是代码片段 EnableBatchProcessing EnableScheduling public class Config extends Defaul
  • Flutter闪屏不全屏android 12

    我正在创建一个带有闪屏的颤振应用程序 我已经用过flutter native splash然而 无论我在manifest xml styles xml和launch background xml中进行什么更改 我都无法让它填满整个屏幕 它以
  • splat over JavaScript 对象(用 new )?

    如何在不使用的情况下跨越对象ECMA6 特点 Attempt function can arg0 arg1 return arg0 arg1 function foo bar haz this bar bar this haz haz my
  • Ruby 1.9.3 用 eval 定义 var

    我正在用 Ruby 编写类似 REPL 的东西 我需要在运行时定义变量 我发现我应该使用 eval 但这里是 irb 会话的摘录来测试它 在 1 9 3 中 这在 1 8 中有效 gt eval a 3 gt 3 gt a gt NameE
  • PHP 比较数组

    无论如何 有没有使用内置函数来比较 php 中的数组 而不需要执行某种循环 a1 array 1 2 3 a2 array 1 2 3 if array are same a1 a2 code here 顺便说一句 数组值并不总是按相同的顺
  • 在 UIPasteboard 中存储 NSArray

    我有几个文本文件想要在 2 个应用程序之间传输 即同一应用程序的免费和付费版本 我正在使用 UIPasteboard 来执行此操作 文件的内容作为 NSArray 保存在内存中 因此我想将这些 NSArray 复制到粘贴板 精简版 并从粘贴
  • 使用 itextsharp 删除基于文本的水印

    根据这篇文章 从 PDF iTextSharp 中删除水印 mkl 代码适用于 ExGstate 图形水印 但我已经测试了此代码以从某些 PDF 内容后面具有基于文本的水印的文件中删除水印 例如此文件 http s000 tinyuploa
  • ReactJS 修改对象数组的特定属性

    我得到了在状态中分配的对象数组 我想用输入字段修改属性 我尝试了以下一些
  • 如何使用 Javascript 获取元素的名称?

    我正在尝试获取 Javascript 中元素的名称 含义如果该元素是 div div then div 会被退回 如果它是 img src then img 会被退回 我使用 jquery 选择一堆元素 然后对所有元素调用自定义函数 在该函
  • Pandas 0.20.2 to_sql() 使用 MySQL

    我正在尝试将数据帧写入 MySQL 表 但得到了 111 Connection refused error 我在这里遵循了已接受的答案 使用 SQLAlchemy to sql 使用 pandas 写入 MySQL 数据库 答案的代码 im
  • python Spyder 不导入 numpy

    我正在使用 python Spyder 2 2 5 和 Windows 7 python 2 7 编写脚本 一开始我尝试了所有的导入方式 from numpy import or import numpy and also import n
  • 以类名作为返回类型的方法

    我是 C 或任何类型的编程语言的新手 当我看到c 中的代码时 我发现这里有很多混乱 我想从这里澄清其中之一 方法的常见结构是
  • 从 VBA 运行 python 脚本

    设想 我正在尝试从 Excel 中的 vba 代码运行 python 脚本 代码运行没有错误 但没有产生任何结果 VBA 中的代码 Private Sub CommandButton1 Click Dim Ret Val Dim args
  • 尝试将数据附加到子值时应用程序崩溃

    我正在按照 firebase 中所示的说明进行操作 但即使在确保文本条目的类型为字符串之后 我仍然遇到崩溃 这是错误 由于未捕获的异常 InvalidPathValidation 而终止应用程序 原因 child 必须是非空字符串且不包含
  • Java 并发递增值

    我一直在读关于volatile and synchronized但我一直在困惑中摸不着头脑 我希望有人能帮助我解决问题 private HashMap
  • ALTER TABLE 脚本中的 MySQL 变量

    您好以下过程必须将所有约束从一个表移至另一个表 但是我在应删除约束时遇到了一些困难 问题 如何在下面的行中使用变量 ALTER TABLE var referenced table name DROP FOREIGN KEY var con
  • R:将日期从每日转换为每周并绘制它们

    我正在尝试学习如何处理时间序列数据 我创建了一些虚假的每日数据 尝试按周聚合它 然后绘制它 set seed 123 library xts library ggplot2 date decision made seq as Date 20
  • setf 在函数中不起作用

    我在脚本中定义了一个特殊变量 unsorted list 和一个用于重置此变量的函数 defparameter unsorted lst nil defun reset to unsorted list setf unsorted lst
  • 将 .tar.gz 文件的内容从网站读取到 python 3.x 对象中

    我是Python新手 当尝试将 tar gz 文件的内容读入 python 时 我无法弄清楚我做错了什么 我想要阅读的 tar 文件托管在以下网址 ftp ftp ncbi nlm nih gov pub pmc b0 ac Breast