问题标签 [cstringio]

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 投票
2 回答
998 浏览

python - Python - Pyramid 和 matplotlib - 不能有多个视图输出 SVG?

我正在开发一个 Python Pyramid 应用程序,我打算在其中创建多个 SVG 图像来使用饼图绘制统计数据。在我的测试中,我发现一个 SVG 视图可以正常工作,并且只要我添加第二个 SVG 输出视图,并且加载第二个 SVG 图像(SVG 图像加载的顺序无关紧要),无论是直接通过其视图还是通过引用此视图的另一个视图,SVG 图像在任何其他进一步调用中“组合”以加载 SVG 文件。这似乎是 Python 堆栈中的一个错误,因为它似乎没有正确清除内存(主要是在多个 SVG 文件的情况下,请参阅下面的更多详细信息)。下面还要注意,在加载足够多的图像/页面后会遇到 TclError。

由于我在具有更多视图的更详细的应用程序中使用 SVG,因此我在最小化/简化的应用程序中复制它以表明它不是我正在做的额外事情,并且此代码是直接从 Pyramid alchemy模板和数据库生成的不涉及通话。该数据库在我的更多详细信息应用程序中得到了积极利用。此应用程序只有 3 个视图,其中第一个视图是原始模板的一部分。我还添加了 DEBUG 日志记录,以明确没有迹象表明存在对其他 SVG 视图的任何内部调用。

一些视图代码基于Matplotlib svg 作为字符串,而不是主要用于StringIO. 请注意,由于需要饼图,这就是我的代码与引用问题中的代码不同的主要原因。我发现无论我使用StringIO还是cStringIO. 在我的代码中,我正在使用cStringIO.

完整的应用程序代码位于:https ://github.com/danielpronych/pyramidapp

PyPlot 文档:: pyplot api

更新:来自第一个 SVG 视图的代码(图形句柄和关闭命令):

此代码的步骤

  1. 加载http://localhost:6543/test.svg
  2. 加载http://localhost:6543/test2.svg
  3. 再次加载 (1) 或 (2)。将pserve在命令窗口中没有任何迹象的情况下连续“旋转”为什么。

注意:使用此代码加载相同的 SVG 视图 3 次也具有与上述步骤相同的结果,而下面的代码不会发生。

另请注意,pyplot pie确实有回报;然而,它本身并不是一个“手柄”。

  • pserve即使等待超过一分钟(特别是在执行上述步骤之后),窗口也不响应 Control+C 命令。

来自第一个 SVG 视图的代码(原始,以下步骤来自此代码):

Python 版本: Python 2.7.5

Python 包配置(仅限主包)

  • 金字塔-1.6a1-py2.7
  • matplotlib-1.4.3-py2.7-win32

重现步骤:

  1. 保护金字塔应用程序。

命令:pserve development.ini --reload

  1. 加载http://localhost:6543/test.svg

请注意,这可以正常工作

第 2 步图片

  1. 加载http://localhost:6543/test2.svg

请注意,这会将两个 SVG 文件“组合”在一起

第 3 步图像

  1. 加载http://localhost:6543/test.svg

请注意,这与 test2.svg 完全相同,具有正确的标题,因为它们的长度也相似,现在图像也在此视图中合并

第 4 步图像

  1. 重新托管应用程序并仅加载http://localhost:6543/test2.svg

请注意,这适用于首次加载,因为此视图是在 test.svg 这次之前加载的

第 5 步图像

使用 Control+C 终止 pserve 进程时的跟踪日志

重要提示:加载足够多的 SVG 图像后,会遇到以下情况:

目前解决此问题的唯一方法是重新启动pserve。还要注意,my_view只要 SVG 图像未被此类视图引用或使用,视图(例如加载)就可以正确加载。

另一个重要的注意事项,只要只加载一个 SVG 文件,即http://localhost:6543/test.svg,整个时间pserve似乎可以无限次重新加载/刷新图像而没有任何明显的问题,或遇到以下情况:

_tkinter 标头

更新(2015 年 9 月):我希望看到 Sergey 的进一步更新,因为他建议的解决方案一开始似乎确实有所帮助;但是,他的解决方案并没有解决这个问题,因为即使我等待了相当长的时间也没有发生任何事情,我发现只有我的解决方案才能真正解决这个问题。最后,需要明确的是,我的解决方案适用于基于 Web 的实现和批处理,因为这个问题也出现在批处理中。

0 投票
1 回答
475 浏览

python - 当文件小于 1kByte 时,cStringIO.StringO 无法保存上传的文件流

我借用了这段代码来将文件流保存到磁盘,除了文件大小小于 1kb 时,它都可以工作。我收到此错误:

AttributeError:“cStringIO.StringO”对象没有属性“名称”

那么我该怎么做才能确保 cStringIO.StringO 处理上传的小文件呢?

0 投票
1 回答
62 浏览

python - 多线程 cstringio 在 ubuntu 14.04 上慢 17%

我正在运行以下程序:

在具有完全相同硬件的机器上,但一台运行 ubuntu 10.04,另一台运行 14.04。我观察到 10.04 需要 1409.54 秒,而 14.04 需要 1656.81 秒,显示 14.04 性能下降 17%。有任何想法吗?

0 投票
1 回答
73 浏览

python - PYVISA 中的 ENUM 模块和 cStringIO 模块

我有一些麻烦要解决。我将 Python 3.2 与pyvisaPython 3.2 32 位一起使用。当我使用:

它显示:

但是当我使用:

我得到:

我只想使用pyvisaGPIB 的 Agilent 33250a。

0 投票
1 回答
494 浏览

python - 比 StringIO 和 cStringIO 慢的真实文件对象?

StringIO在其代码中有以下注释:

“真实文件通常更快”这一行对我来说似乎很奇怪:写入磁盘怎么能胜过写入内存?我尝试分析这些不同的案例并得到与这些文档相矛盾的结果,以及这个问题的答案。这另一个问题确实解释了为什么cStringIO在某些情况下会变慢,尽管我在这里没有做任何连接。测试将给定数量的数据写入文件,然后寻找开头并将其读回。在“新”测试中,我每次都创建一个新对象,而在“相同”测试中,我为每次重复截断并重用相同的对象,以排除开销来源。这种开销对于使用具有小数据大小但不是大数据的临时文件很重要。

代码在这里

这两种StringIO实现相当具有可比性,尽管cStringIO对于大数据量显着减慢了速度。但是tempfile.TemporaryFile总是用最慢的3倍StringIO

0 投票
1 回答
6897 浏览

python - tempfile.TemporaryFile 与 StringIO

我写了一个小基准,比较了ZOCache的不同字符串连接方法。

所以这里看起来 tempfile.TemporaryFile 比其他任何东西都快:

我一直在使用的基准代码:

编辑 Python3.4.3 + io.BytesIO

io.BytesIO 的新来源:

每个平台都是这样吗?如果是这样,为什么?

编辑:具有固定基准(和固定代码)的结果:

0 投票
1 回答
2867 浏览

python - 从 URL 读取图像,使用 misc.imread 返回扁平数组而不是彩色图像

我正在尝试从 URL 读取图像(由 Google 的静态地图 API 提供)。

图像在浏览器中显示正常。

在此处输入图像描述

https://maps.googleapis.com/maps/api/staticmap?maptype=satellite¢er=37.530101,38.600062&zoom=14&size=256x278&key= ...

但是当我尝试使用 misc.imread 将它加载到数组中时,它似乎最终成为一个二维数组(即扁平化,没有 RGB 颜色)。

这是我正在使用的代码(我隐藏了我的 API 密钥):

我所期望的是一个 3-d 形状数组 (278, 256, 3)。

也许它没有正确读取文件?

0 投票
1 回答
189 浏览

python - Python 捕获来自 powershell 的回复

下面的代码在手动输入时有效,但是当我运行 program.py 时没有打印。我的最终目标是从用户 pc 检索这些数据,以创建一种简单的方法来重新创建快捷方式....我的用户不知何故失去了他们哈哈

0 投票
1 回答
21544 浏览

python - 对 StringIO、cStringIO 和 ByteIO 感到困惑

我已经用谷歌搜索并在 SO 上搜索这些缓冲区模块之间的区别。但是,我仍然不太了解,我认为我阅读的一些帖子已经过时了。

在 Python 2.7.11 中,我使用r = requests.get(url). 然后我将StringIO.StringIO(r.content),cStringIO.StringIO(r.content)和传递io.BytesIO(r.content)给了一个为解析内容而设计的函数。

这三种方法都可用。我的意思是,即使文件是二进制文件,使用StringIO. 为什么?

另一件事是关于他们的效率。

如上图所示,cStringIO > StringIO > BytesIO.

我发现有人提到io.BytesIO总是制作一个新副本,这会花费更多时间。但也有一些帖子提到,这在后来的 Python 版本中已修复。

IO那么,任何人都可以在最新的 Python 2.x 和 3.x 中对这些 s 进行彻底的比较吗?


我找到的一些参考资料:

  • https://trac.edgewall.org/ticket/12046

    io.StringIO 需要一个 unicode 字符串。io.BytesIO 需要一个字节字符串。StringIO.StringIO 允许 unicode 或字节字符串。cStringIO.StringIO 需要一个被编码为字节字符串的字符串。

cStringIO.StringIO('abc')不会引发任何错误。

2014 年的这篇文章中有一个修复补丁。

  • 此处未列出许多 SO 帖子。

这是 Eric 示例的 Python 2.7 结果

至于 2.7,cStringIO.StringIO并且StringIO.StringIOio.

0 投票
2 回答
1083 浏览

python - 如何使用 Python Pillow 更改图像格式而不将其写入磁盘

我得到了从互联网上获得的枕头图像:

我想将它与 tesserocr 一起使用,但它不适用于 GIF 图像。

如果我将图像保存为 PNGimg.save("tmp.png")并加载它,img = Image.open("tmp.png")一切正常。

有没有办法在不写入磁盘的情况下进行这种转换?