流正在关闭哪里?使用PyQRCode创建一个带有io流的png QR

时间:2015-02-05 02:12:58

标签: python pypng bytesio

我正在使用PyQRCode [0]在Python 2.7.6下生成PNG格式的QR。

当我尝试使用所有正常工作在磁盘上写入文件时:

import pyqrcode
from io import BytesIO
qr = pyqrcode.create("my qr string", mode='binary', version=7)
qr.png("myqr.png", scale=4)

但是当我尝试使用此代码使用io流时:

import pyqrcode
from io import BytesIO
qr = pyqrcode.create("my qr string", mode='binary', version=7)
f=BytesIO()
qr.png(f, scale=4)
f.getvalue()

我上了f.getvalue()行:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: I/O operation on closed file.

PyQRCode文档说file参数可以是可写的流。

我努力调试这个,但我找不到流被关闭的位置,并且没有任何流的.close()语句。 [1]

[0] https://pypi.python.org/pypi/PyQRCode

[1] http://pythonhosted.org//PyQRCode/_modules/pyqrcode.html#QRCode.png

1 个答案:

答案 0 :(得分:1)

这是PyQRCode中的一个错误,在Github回购中有一个PR(尚未合并)解决了这个问题:

https://github.com/mnooner256/pyqrcode/pull/6