问题标签 [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.
python - Python3.0:标记化 & BytesIO
在 python3.0 中尝试tokenize
字符串时,为什么'utf-8'
在标记开始之前我会得到一个前导?
从python3 文档,tokenize
现在应该按如下方式使用:
但是,在终端尝试此操作时,会发生以下情况:
utf-8
其他令牌之前的令牌是什么?这应该发生吗?如果是这样,那么我应该总是跳过第一个令牌吗?
[编辑]
我发现令牌类型 57 是tokenize.ENCODING,如果需要,可以轻松地将其从令牌流中过滤掉。
python - BytesIO 与 python v2.5
问题:
如何获得与 Python 2.5 的 StringIO 类似的字节流?
应用:
我正在将 PDF 转换为文本,但不想将文件保存到硬盘。
其他想法:
我想我可以使用 StringIO,但没有模式参数(我猜“字符串”意味着文本模式)。
显然 io.BytesIO 类是 v2.6 中的新类,所以这对我也不起作用。
我有一个使用 tempfile 模块的解决方案,但我想避免对硬盘进行任何读/写操作。
zipfile - 奇怪的“BadZipfile: Bad CRC-32”问题
此代码是 Django 应用程序中代码的简化,该应用程序通过 HTTP 多部分 POST 接收上传的 zip 文件,并对内部数据进行只读处理:
很简单。我们打开 zip 文件和 zip 文件中的一两个 CSV 文件。
奇怪的是,如果我用一个大的 zip 文件(~13 MB)运行它并让它实例化ZipFile
from aStringIO.StringIO
或 a io.BytesIO
(也许不是普通文件名?我在 Django 应用程序中尝试创建ZipFile
from时遇到了类似的问题aTemporaryUploadedFile
甚至是通过调用os.tmpfile()
and shutil.copyfileobj()
) 创建的文件对象,并让它打开两个 csv 文件,而不仅仅是一个,然后它在处理结束时失败。这是我在 Linux 系统上看到的输出:
顺便说一句,代码在相同的条件下失败,但在我的 OS X 系统上以不同的方式失败。而不是BadZipfile
异常,它似乎读取了损坏的数据并且变得非常困惑。
这一切都向我表明,我在这段代码中做了一些你不应该做的事情——例如:zipfile.open
在同一个 zip 文件对象中已经打开另一个文件的同时调用一个文件?使用时这似乎不是问题ZipFile(filename)
,但在传递ZipFile
类似文件的对象时可能会出现问题,因为zipfile
模块中的一些实现细节?
也许我错过了zipfile
文档中的某些内容?或者它可能还没有记录?或者(最不可能)zipfile
模块中的错误?
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 之间的差异。
python - 取回字节对象而不是上传的文件
Python 3.2,Apache,无框架
我有一个表格来上传文件:
还有一些选择框,但我不想混淆这个问题。最终目标是加密给定文件,并将其存储在某个地方,然后将其解密并返回。我设法让加密/解密工作,但不是一个pdf文件,而是一个字节字符串(在浏览器中打开它说:
所以我去掉了加密和解密和保存,我现在只是想让它给我刚刚上传的确切文件:
这给了我:
我现在已经用两种不同的 pdf 进行了尝试,并且都给出了相同的信息。
一个文本文件返回一个原始文本的字节串:
更改代码以包含处置:
并且使用文本文件给了我通常的下载或保存,但文本文件只是相同的字节字符串,而不是实际文件。
我花了最后一天试图找到能让谷歌给我答案的准确的单词组合,但是在所有适用的(非常少,令人惊讶的)结果中,它们都表现得好像这是一个基本的操作,应该可以正常工作。我发现有关从二进制文件中读取并正确打开它们的内容,除了上传的文件是临时文件,而不是保存的文件,它在内存中并且 open 不是它的有效方法。我还看到了有关在 python 中设置文件服务器的内容,但他们谈论的是设置实际服务器,而不仅仅是吐出单个文件。我需要设置一个完整的服务器来取回文件吗?
我确定我在这里犯了一些非常愚蠢的新手错误,但我就是不知道是什么。
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 地址之间移动文件,而无需中间物理文件写入:
python - 我可以在 Python 中将 io.BytesIO() 流通过管道传输到 subprocess.popen() 吗?
我正在尝试使用subprocess.popen ()将 io.BytesIO() 字节流通过管道传输到单独的程序,但我不知道如何或是否有可能。文档和示例都是关于文本和换行符的。
当我掀起这样的事情时:
我明白了
我认为popen()仅适用于文本。我错了吗?
有不同的方法可以做到这一点吗?
java - 序列化后如何获取类型的长度
我遇到一个问题,在 Java 中,我有一个映射,例如map<K,V>
,K
并且V
可以是任意类型,例如int
, Long
, String
,Time
等。
地图序列化后,我可以得到K
或的长度V
吗?我可以写一个通用的方法来实现这个想法吗?就像是:
怎么可能这样做?
python - 在内存中图像到 Zipfile
我写了这段代码:
应该打开存储在我的模型中的图像(这是在 Django 应用程序中)。我想在将图像文件添加到 zipfile (zf) 之前降低图像文件的质量。所以我决定使用 BytesIO 来防止在磁盘上写入无用的文件。虽然我在这里遇到错误。它说:
embedded NUL character
有人可以帮我解决这个问题吗?我不明白发生了什么事。
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-heroku
和https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
),但到目前为止 ffmpeg 无法在 heroku 上运行(当我执行“heroku run ffmpeg --version”时,ffmpeg 无法识别)......你认为这是原因吗?
当我在这里转圈圈时,将不胜感激任何这样的答案:
- “我认为 ffmpeg 确实是你的问题。努力解决这个问题,把它安装在 heroku 上”
- “实际上,我认为这就是 BytesIO 不适合你的原因:......”
- “无论如何,你的方法很糟糕......如果你想读入音频文件以使用 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
看答案,所有问题都解决了