问题标签 [bytesio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
615 浏览

python - Python3.0:标记化 & BytesIO

在 python3.0 中尝试tokenize字符串时,为什么'utf-8'在标记开始之前我会得到一个前导?

python3 文档tokenize现在应该按如下方式使用:

但是,在终端尝试此操作时,会发生以下情况:

utf-8其他令牌之前的令牌是什么?这应该发生吗?如果是这样,那么我应该总是跳过第一个令牌吗?

[编辑]

我发现令牌类型 57 是tokenize.ENCODING,如果需要,可以轻松地将其从令牌流中过滤掉。

0 投票
2 回答
4291 浏览

python - BytesIO 与 python v2.5

问题:

如何获得与 Python 2.5 的 StringIO 类似的字节流?

应用:

我正在将 PDF 转换为文本,但不想将文件保存到硬盘。

其他想法:

我想我可以使用 StringIO,但没有模式参数(我猜“字符串”意味着文本模式)。

显然 io.BytesIO 类是 v2.6 中的新类,所以这对我也不起作用。

我有一个使用 tempfile 模块的解决方案,但我想避免对硬盘进行任何读/写操作。

0 投票
4 回答
19384 浏览

zipfile - 奇怪的“BadZipfile: Bad CRC-32”问题

此代码是 Django 应用程序中代码的简化,该应用程序通过 HTTP 多部分 POST 接收上传的 zip 文件,并对内部数据进行只读处理:

很简单。我们打开 zip 文件和 zip 文件中的一两个 CSV 文件。

奇怪的是,如果我用一个大的 zip 文件(~13 MB)运行它并让它实例化ZipFilefrom aStringIO.StringIO或 a io.BytesIO(也许不是普通文件名?我在 Django 应用程序中尝试创建ZipFilefrom时遇到了类似的问题aTemporaryUploadedFile甚至是通过调用os.tmpfile()and shutil.copyfileobj()) 创建的文件对象,并让它打开两个 csv 文件,而不仅仅是一个,然后它在处理结束时失败。这是我在 Linux 系统上看到的输出:

顺便说一句,代码在相同的条件下失败,但在我的 OS X 系统上以不同的方式失败。而不是BadZipfile异常,它似乎读取了损坏的数据并且变得非常困惑。

这一切都向我表明,我在这段代码中做了一些你不应该做的事情——例如:zipfile.open在同一个 zip 文件对象中已经打开另一个文件的同时调用一个文件?使用时这似乎不是问题ZipFile(filename),但在传递ZipFile类似文件的对象时可能会出现问题,因为zipfile模块中的一些实现细节?

也许我错过了zipfile文档中的某些内容?或者它可能还没有记录?或者(最不可能)zipfile模块中的错误?

0 投票
4 回答
2038 浏览

python - Python - BytesIO 和 urllib2.add_data

我有一个 BytesIO,我正在向其中添加各种字节。我想通过 request.add_data 方法在 urllib2.Request 中发送它。我该怎么做呢?当我尝试

我究竟做错了什么?我是 Python 新手,不知道如何从 BytesIO 创建缓冲区。另外,当我尝试时:

我收到“对已关闭文件的 I/O 操作”。如果我尝试等到 urlopen 之后调用 bytesio.close,那么请求就会挂起,因为它正在等待关闭 bytesio。

我需要做什么?

回答

投到一根弦上让它很开心。我没有尝试查看它是否都适用于 StringIO,也没有尝试过 Python 2.x 和 3.x 之间的差异。

0 投票
1 回答
1887 浏览

python - 取回字节对象而不是上传的文件

Python 3.2,Apache,无框架

我有一个表格来上传文件:

还有一些选择框,但我不想混淆这个问题。最终目标是加密给定文件,并将其存储在某个地方,然后将其解密并返回。我设法让加密/解密工作,但不是一个pdf文件,而是一个字节字符串(在浏览器中打开它说:

所以我去掉了加密和解密和保存,我现在只是想让它给我刚刚上传的确切文件:

这给了我:

Adobe 错误

我现在已经用两种不同的 pdf 进行了尝试,并且都给出了相同的信息。

一个文本文件返回一个原始文本的字节串:

更改代码以包含处置:

并且使用文本文件给了我通常的下载或保存,但文本文件只是相同的字节字符串,而不是实际文件。

我花了最后一天试图找到能让谷歌给我答案的准确的单词组合,但是在所有适用的(非常少,令人惊讶的)结果中,它们都表现得好像这是一个基本的操作,应该可以正常工作。我发现有关从二进制文件中读取并正确打开它们的内容,除了上传的文件是临时文件,而不是保存的文件,它在内存中并且 open 不是它的有效方法。我还看到了有关在 python 中设置文件服务器的内容,但他们谈论的是设置实际服务器,而不仅仅是吐出单个文件。我需要设置一个完整的服务器来取回文件吗?

我确定我在这里犯了一些非常愚蠢的新手错误,但我就是不知道是什么。

0 投票
1 回答
7132 浏览

python - ftp 发送 python bytesio 流

我想用 python ftplib 发送一个文件,从一个 ftp 站点到另一个,以避免文件读/写进程。

我创建了一个 BytesIO 流:

我使用 retrbinary 从 ftp 站点一成功检索了图像文件:

我可以将此内存对象保存到常规文件中:

但是我无法通过带有 storbinary 的 ftp 发送这个流。我认为这会起作用:

但没有。我收到一个以 'buf = fp.read(blocksize) AttributeError: 'str' object has no attribute 'read' 结尾的长错误消息

我也尝试了许多荒谬的组合,但没有成功。顺便说一句,我也对我在 myfoto.write 上所做的真正感到困惑。不应该是 myfoto.write() 吗?

我对这个缓冲区的作用或需要什么也一无所知。我想要实现的目标太复杂了吗?我应该只在系统中使用中间写入/读取来 ping pong 文件吗?全部

编辑:感谢 abanert,我把事情搞清楚了。作为记录, storbinary 参数是错误的,并且需要一个 myfile.seek(0) 在发送之前“倒回”流。这是一个工作片段,可在两个 ftp 地址之间移动文件,而无需中间物理文件写入:

0 投票
2 回答
7668 浏览

python - 我可以在 Python 中将 io.BytesIO() 流通过管道传输到 subprocess.popen() 吗?

我正在尝试使用subprocess.popen ()将 io.BytesIO() 字节流通过管道传输到单独的程序,但我不知道如何或是否有可能。文档和示例都是关于文本和换行符的。

当我掀起这样的事情时:

我明白了

我认为popen()仅适用于文本。我错了吗?
有不同的方法可以做到这一点吗?

0 投票
2 回答
58 浏览

java - 序列化后如何获取类型的长度

我遇到一个问题,在 Java 中,我有一个映射,例如map<K,V>,K并且V可以是任意类型,例如int, Long, String,Time等。

地图序列化后,我可以得到K或的长度V吗?我可以写一个通用的方法来实现这个想法吗?就像是:

怎么可能这样做?

0 投票
1 回答
2580 浏览

python - 在内存中图像到 Zipfile

我写了这段代码:

应该打开存储在我的模型中的图像(这是在 Django 应用程序中)。我想在将图像文件添加到 zipfile (zf) 之前降低图像文件的质量。所以我决定使用 BytesIO 来防止在磁盘上写入无用的文件。虽然我在这里遇到错误。它说:
embedded NUL character
有人可以帮我解决这个问题吗?我不明白发生了什么事。

0 投票
2 回答
4116 浏览

heroku - 从 url 读取 pydub AudioSegment。BytesIO 仅在 heroku 上返回“OSError [Errno 2] No such file or directory”;在本地主机上很好

编辑 1 对于任何有相同错误的人:安装 ffmpeg 确实解决了 BytesIO 错误

为仍然愿意提供帮助的任何人编辑 1:我现在的问题是,当我使用 AudioSegment.export("filename.mp3", format="mp3") 时,文件已制作,但大小为 0 字节——详情如下(如“编辑 1")


编辑2:现在所有问题都解决了。

  • 可以使用 BytesIO 将文件作为 AudioSegment 读入
  • 我找到了 buildpacks 以确保 ffmpeg 在我的应用程序上正确安装,并支持导出正确的 mp3 文件

下面回答


原始问题

我让 pydub 在本地工作得很好,可以根据 url 中的参数裁剪特定的 mp3 文件。(?start_time=3.8&end_time=5.1)

当我运行foreman start它时,它在 localhost 上看起来一切都很好。html 渲染得很好。views.py 中的关键行包括使用从 url 读取文件

这一切都很好......直到我推送到heroku(django应用程序)并在线运行它。然后当我现在在 herokuapp.com 上加载相同的页面时,我收到了这个错误

我已经注释掉了一些原文,以说服自己,单行original=AudioSegment.from_mp3(BytesIO(mp3))是问题的根源……但这在本地不是问题

views.py 中的完整功能如下所示:

特别是在我访问页面时调用的views.py中的视图:

有什么建议么?

潜在相关:我在本地安装了 ffmpeg

但由于不了解构建包,无法将其安装到 heroku 上。我刚刚尝试过(http://stackoverflow.com/questions/14407388/how-to-install-ffmpeg-for-a-django-app-on-herokuhttps://github.com/shunjikonishi/heroku-buildpack-ffmpeg),但到目前为止 ffmpeg 无法在 heroku 上运行(当我执行“heroku run ffmpeg --version”时,ffmpeg 无法识别)......你认为这是原因吗?

当我在这里转圈圈时,将不胜感激任何这样的答案:

  1. “我认为 ffmpeg 确实是你的问题。努力解决这个问题,把它安装在 heroku 上”
  2. “实际上,我认为这就是 BytesIO 不适合你的原因:......”
  3. “无论如何,你的方法很糟糕......如果你想读入音频文件以使用 pydub 进行处理,你应该这样做:......”(因为我只是第一次通过 pydub 破解。 ..我的方法可能很差)

编辑 1

ffmpeg 现已安装(例如,我可以输出 wav 文件)

但是,我无法创建 mp3 文件,仍然......或者更准确地说,我可以,但文件大小为零

请注意上面 0 的文件大小为 mp3 文件...当我在我的 macbook 上做同样的事情时,文件大小永远不会为零

回到heroku shell:

我第一次意识到我忘记了pydub.AudioSegment.ffmpeg = "/app/vendor/ffmpeg/bin/ffmpeg"命令,但是正如你在上面看到的,文件仍然是零大小

出于绝望,我什至尝试将“.heroku”添加到路径中,以便与您的示例一样逐字记录,但这并没有解决它:

最后,我尝试导出一个 .wav 文件来检查 pydub 至少工作正常

至少 .wav 的文件大小不为零,因此 pydub 正在工作

我目前的理论是,要么我仍然没有正确使用 ffmpeg,要么还不够……也许我需要在基本 ffmpeg 之上额外安装一个 mp3。

几个网站提到“libavcodec-extra-53”,但我不知道如何在heroku上安装它,或者检查我是否有它?https://github.com/jiaaro/pydub/issues/36 同样,关于 libmp3lame 的教程似乎是针对笔记本电脑安装而不是在 heroku 上安装的,所以我很茫然http://superuser.com/questions/196857/how-to-install-libmp3lame-for-ffmpeg

如果相关,我的 requirements.txt 中也有 youtube-dl ...这也适用于我的 macbook 本地,但是当我在 heroku shell 中运行它时失败:

信息链接是它太具体说明了 mp3 故障,所以也许这两个问题是相关的。


编辑 2

看答案,所有问题都解决了