如何使用 Python 打开和处理存储在 Google Cloud Storage 中的 CSV 文件

2023-12-15

我正在使用 Google 云存储客户端库。

我正在尝试使用以下代码打开并处理 CSV 文件(已上传到存储桶):

filename = '/<my_bucket/data.csv'
with gcs.open(filename, 'r') as gcs_file:
    csv_reader = csv.reader(gcs_file, delimiter=',', quotechar='"')

我收到错误“参数 1 必须是迭代器”以响应 csv.reader 的第一个参数(即 gcs_file)。显然 gcs_file 不支持迭代器 .next 方法。

关于如何进行的任何想法?我是否需要包装 gcs_file 并在其上创建迭代器,还是有更简单的方法?


我认为最好有自己的为 csv.reader 设计的包装器/迭代器。如果 gcs_file 支持Iterator协议,目前尚不清楚 next() 应该返回什么以始终适应其消费者。

根据 csv reader doc,它

返回一个读取器对象,它将迭代给定 csv 文件中的行。 csvfile 可以是任何支持迭代器协议并在每次调用其 next() 方法时返回字符串的对象 - 文件对象和列表对象都适合。如果 csvfile 是文件对象,则必须在有区别的平台上使用“b”标志打开它。

它期望来自底层文件的一大块原始字节,而不一定是一行。你可以有一个像这样的包装器(未经测试):

class CsvIterator(object)
  def __init__(self, gcs_file, chunk_size):
     self.gcs_file = gcs_file
     self.chunk_size = chunk_size
  def __iter__(self):
     return self
  def next(self):
     result = self.gcs_file.read(size=self.chunk_size)
     if not result:
        raise StopIteration()
     return result

关键是一次读取一个块,这样当您有一个大文件时,就不会耗尽内存或经历 urlfetch 超时。

或者更简单。使用iter内置:

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

如何使用 Python 打开和处理存储在 Google Cloud Storage 中的 CSV 文件 的相关文章

  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • Google Cloud Stackdriver 调试代理:无法在 v8 中设置断点

    我正在尝试使用以下命令在节点中设置 Stackdriver 调试器 google cloud debug agentnpm 包 设置快照断点时出现以下错误 Unable to set breakpoint in v8 该版本启用了调试代理
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in

随机推荐

  • 如何实现 Rust 的 Copy 特性?

    我正在尝试在 Rust 中初始化一个结构数组 enum Direction North East South West struct RoadPoint direction Direction index i32 Initialise th
  • Angular 2以间隔执行可观察的

    假设我有以下代码 let sub Observable interval 1000 map x gt let date1 Math floor new Date getTime 1000 this diff date2 date1 subs
  • jQuery Ready 回调的调用顺序

    如果页面中有两个 javaScript 函数 则需要在文档加载完成时调用它们 是否有可能任何函数都可以首先执行 或者它总是第一个首先执行的函数 因此 如果使用 jQuery 如果您有以下代码 document ready function
  • 动态加载Javascript文件和加载完成事件

    今天我一直致力于加载动态 javascript 代码 文件 我使用的解决方案是 function loadScript scriptUrl var head document getElementsByTagName head 0 var
  • Xamarin.Forms 将数据从设备特定代码返回到表单

    我尝试从 Xamarin Forms 代码中获取当前位置 但没有成功 我尝试过Xamarin Forms 移动服务从他们的示例代码 在这里找到http github com aritchie acr xamarin forms 但是它非常复
  • 在android中将图像存储到SQLite中

    我想将图像存储在 SQLite 数据库中 该图像是从 SD 卡中选择的 在谷歌搜索后我发现BLOB是在数据库中存储图像的方式 this link随后插入 但它对我不起作用 如何将图像转换为blob 如何以 blob 格式将图像存储在数据库中
  • 当标识符存在时,“接收者没有与标识符的连接”

    对于 iOS 应用程序 我有一个故事板和多个控制器 以及从控制器开始的转场游戏类至控制器设置类 Segue 在控制器视图中游戏类有一个名为游戏设置 然而 当我想从我的游戏类 self performSegueWithIdentifier G
  • 在 Objective-C 中,方法的绑定真的发生在“运行时”吗?

    听说Objective C受到了SmallTalk的 消息传递机制 的影响 Objective C 和 Smalltalk 一样 可以使用动态类型 一个对象可以是 发送了一条未在其接口中指定的消息 这可以让 为了增加灵活性 因为它允许对象
  • 将 PictureBox 内的图片移动到另一个 PictureBox

    如何将一个图片框内的图片移动到另一个图片框 我想用它来移动棋子 我为每个地方都有一个拍摄的图片盒 所以我有 64 个图片盒 你可以只分配Image将一个图片框显示到另一个图片框 如果您随后想要从原始图片框中删除该图像 以便它不会显示两次 您
  • CSS3/JS 在动画期间获取元素的位置

    我需要获取元素的位置 使用 jQuery mydiv position left 不过我需要在期间这样做css3 translate animation div 位置的动画翻译包含在position data 是否可以在动画期间获取元素的位
  • PHP 将磁盘上的文件输出到浏览器

    我想用 PHP 向浏览器提供现有文件 我看过有关 image jpeg 的示例 但该函数似乎将文件保存到磁盘 您必须首先创建一个正确大小的图像对象 或者我只是不明白它 在 asp net 中 我通过读取字节数组中的文件 然后调用 conte
  • Ada:gnat gprbuild 如何链接到库中?

    在我正在处理的这个多语言 GPRBuild 项目中 我有一些 C 库文件 a 我需要链接到我的可执行文件中 是否有 gpr 属性告诉它链接什么或无论如何将 l L 开关传递给链接器 或者甚至更好 Project my library is
  • JSF:更可定制的 selectManyCheckbox 和 selectOneRadio

    我正在使用 selectManyCheckboxes 和 selectOneRadios 我想以某种方式自定义它们 如果可以根据某个属性对 selectItems 进行分组 例如 每个组有一个标题或每个组之间有一条线 那就足够了 有没有办法
  • 为 PostgreSQL 设置 lc_monetary

    我该如何设置lc monetary以显示money docs 数据类型为欧元 I tried change postgresql conf并设置lc monetary de DE UTF 8 euro PG 不会因此更改而启动 当前设置为e
  • 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec

    如果我尝试在客户端计算机上打开 Excel 文件 则会引发以下异常 Exception from HRESULT 0x800A03EC 内部异常 空 堆栈跟踪 at Microsoft Office Interop Excel Workbo
  • enumerateObjectsUsingBlock: 的 BOOL *stop 参数有何用途?

    我一直在使用enumerateObjectsUsingBlock 最近为了我的快速枚举需求 我很难理解BOOL stop在枚举块中 The NSArray类参考状态 stop 对布尔值的引用 该块可以将值设置为YES到 停止对数组的进一步处
  • IE 中的 UpdatePanel 速度缓慢

    我正在开发一个 ASP Net 应用程序 并致力于向其中添加一些 Ajax 以加快某些区域的速度 我关注的第一个领域是教师报告孩子们的出勤情况 以及一些其他数据 的出勤区域 这需要很快 我创建了一个双控件设置 用户单击图标 然后通过 Jav
  • woocommerce_form_field 和隐藏字段

    我正在尝试将自定义字段添加到 WooCommerce 结帐中 但似乎没有隐藏字段的输出 In woocommerce template php 隐藏字段属于这种开关情况 default field apply filters woocomm
  • xgboost:线性增强器gblinear使用了哪些参数?

    在网上查看时 我仍然对线性助推器感到困惑gblinear正是 我不是alone 继文档它只有 3 个参数lambda lambda bias and alpha 也许应该说 附加参数 如果我正确理解这一点 那么线性增强器会 相当标准 线性增
  • 如何使用 Python 打开和处理存储在 Google Cloud Storage 中的 CSV 文件

    我正在使用 Google 云存储客户端库 我正在尝试使用以下代码打开并处理 CSV 文件 已上传到存储桶 filename