gpt4 book ai didi

python tarfile 将tar写入管道

转载 作者:太空狗 更新时间:2023-10-30 03:01:27 25 4
gpt4 key购买 nike

我想创建一个 tar 文件并将其通过管道传输到 http 上传。

但是,似乎 python tarfile 模块执行搜索,这使得无法通过管道传输到下一个进程。

这是代码

tar = tarfile.open('named_pipe', mode='w')
tar.add('file1')
p.close()

'named_pipe'是由mkfifo命令创建的命名管道文件当我运行它并在另一个终端中捕获 named_pipe 时,出现错误

tar = tarfile.open('named_pipe', mode='w')
File "/usr/lib/python2.7/tarfile.py", line 1695, in open
return cls.taropen(name, mode, fileobj, **kwargs)
File "/usr/lib/python2.7/tarfile.py", line 1705, in taropen
return cls(name, mode, fileobj, **kwargs)
File "/usr/lib/python2.7/tarfile.py", line 1566, in __init__
self.offset = self.fileobj.tell()
IOError: [Errno 29] Illegal seek

有什么想法吗?

最佳答案

我们做类似的事情,但从另一边。我们有一个网络应用程序,它向访问者浏览器提供一个 tarfile,这意味着我们通过 http session 流式传输它。诀窍是将打开和可写的文件句柄传递给 tarfile.open() 调用,同时将模式设置为“w|”。像这样:

# assume stream is set to your pipe

with tarfile.open(name="upload.tar",
mode = "w|",
fileobj = stream,
encoding = 'utf-8') as out:

out.add(file_to_add_to_tar)

关于python tarfile 将tar写入管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com