- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对这段代码有疑问:
file = tempfile.TemporaryFile(mode='wrb')
file.write(base64.b64decode(data))
file.flush()
os.fsync(file)
# file.seek(0)
f = gzip.GzipFile(mode='rb', fileobj=file)
print f.read()
我不知道为什么它不打印任何东西。如果我取消注释 file.seek 则会发生错误:
File "/usr/lib/python2.5/gzip.py", line 263, in _read
self._read_gzip_header()
File "/usr/lib/python2.5/gzip.py", line 162, in _read_gzip_header
magic = self.fileobj.read(2)
IOError: [Errno 9] Bad file descriptor
仅供引用,此版本运行良好:
x = open("test.gzip", 'wb')
x.write(base64.b64decode(data))
x.close()
f = gzip.GzipFile('test.gzip', 'rb')
print f.read()
编辑:对于 wrb 问题。初始化时它不会给我一个错误。 Python 2.5.2。
>>> t = tempfile.TemporaryFile(mode="wrb")
>>> t.write("test")
>>> t.seek(0)
>>> t.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor
最佳答案
'wrb'
不是有效模式。
这很好用:
import tempfile
import gzip
with tempfile.TemporaryFile(mode='w+b') as f:
f.write(data.decode('base64'))
f.flush()
f.seek(0)
gzf = gzip.GzipFile(mode='rb', fileobj=f)
print gzf.read()
关于python - tmpfile 和 gzip 组合问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607206/
我有 n 个文件,我的程序需要使用线程和临时文件将所有文件的内容合并到一个文件中(必须使用 tmpfile())。创建线程时,它必须将 2 个文件合并到临时文件 (temp1) 中,然后另一个线程将接
我尝试编译并运行具有以下几行的 C 代码: FILE *preproc_producer = NULL; preproc_producer = tmpfile(); // preproc_produc
我正在开发一个多进程程序,它基本上对 RVB 文件的每一层执行模糊化。 (1 个过程 -> 1 层)。每个子进程都使用函数传送一个临时文件:tmpfile()。每个子进程完成其工作后,主进程必须读取创
这个问题在这里已经有了答案: Is there a way to get the filename from a `FILE*`? [duplicate] (2 个答案) 关闭 6 年前。 tmpf
我有一个图像上传脚本,它以前是有效的。它现在坏了,我已经将问题追溯到一行: $temp = tmpfile(); // $temp === false tmpfile() 函数返回 false。我似乎
快点…… 有没有办法检索由 tmpfile() 创建的文件的路径? 或者我需要自己用 tempnam() 做吗? 最佳答案 好像stream_get_meta_data()也有效: $tmpHandl
在 Jboss 5.1 上部署 EAR 时出现以下异常 java.io.IOException: tmpFile.renameTo(classFile) failed org.apache.j
我的目标是将一个 .exe 文件包装在另一个 .exe 文件中。每当包装器 .exe 启动时,嵌入的 .exe 应该启动。我已将二进制文件添加为资源。现在我想将文件作为 tmpfile 加载并使用 s
tmpfile 中的安全漏洞是什么?以及如何tmpfile_s解决了吗? 最佳答案 在这种情况下,它似乎属于 Windows CRT 升级的“增强型错误报告”类别。在这种情况下,它基本上意味着它将返回
我对这段代码有疑问: file = tempfile.TemporaryFile(mode='wrb') file.write(base64.b64decode(data)) file.flush()
在 Windows 7 x64 上运行以下代码 #include #include int main() { int i; FILE *tmp; for (i = 0; i
最近,我开始在 JBOss 4.0.5 JSP 应用程序中遇到奇怪的行为。 JSP 编译在第一次(第二次、第三次……)尝试时失败,并出现异常: 17:24:29,909 ERROR [[jsp]] S
在 Windows 7 x64 上运行以下代码 #include #include int main() { int i; FILE *tmp; for (i = 0; i
如何在不使用 tmpnam() 的情况下通过调用 tmpfile() 在 Windows 上获取文件名? std::FILE* tmpf = std::tmpfile(); // Opens a
我正在使用 std::tmpfile() 创建临时文件,但我想使用/tmp 以外的位置。我正在导出 $TMPDIR 以指向新位置,但 std::tmpfile() 没有选择新位置。 如何在/tmp 以
我正在使用 Jetty 6 服务器,有时会出现此异常: java.io.IOException: tmpFile.renameTo(classFile) failed at org.apach
我使用的程序在使用 tmpfile() 时失败了对于大文件。问题似乎是我没有在/tmp 中创建大文件的权限,此函数默认使用该权限。那么有没有一种方法,也许使用环境变量,可以让 tmpfile() 写入
我正在尝试在 Windows 下使用 generateDS,它使用 os.tmpfile。不幸的是,os.tmpfile 对我不起作用: (oneclickcos) C:\Users\Marcin\D
我想打开一个外部配置文件并在编辑器中将其呈现给用户。 我想到的解决办法是创建一个临时文件,把原文件的内容复制到里面。然后将在默认编辑器中打开临时文件供用户编辑。这一切都已完成,因为不应该将不正确的配置
$ man tmpfile说 The standard does not specify the directory that tmpfile() will use. Glibc will try t
我是一名优秀的程序员,十分优秀!