为从 stdout 生成的 zip 存档中的文件命名

Give name to a file within a zip archive which generated from stdout

我是 运行 python 脚本中的 postgresql 查询

copy (SELECT * FROM table) TO PROGRAM 'gzip > ./" + file_from + "' with csv HEADER;

生成的 zip 文件具有预期的名称,但 zip 存档中的文件没有扩展名,它与 zip 文件相同但减去“.zip”扩展名。我想在不执行复杂操作(例如解压缩、重命名、压缩)的情况下将“.csv”扩展名添加到文件名。

提前致谢。

Gzip 不像 pkzip 那样创建存档。

如果你将 gzip 的输出发送到 datadump.csv.gz 然后 运行 gunzip 将它解压到一个名为 datadump.csv 的文件,但这只是一个方便的功能遵循约定,对文件中的实际内容没有影响。

假设您要使用“gzip”,约定将创建使用“.csv.gz”作为后缀。在文件上使用“gunzip”将导致 filename.csv.

如果是上面的例子,设置file_name为“whatever.csv.gz”

使用 ZIP 格式稍微复杂一些,因为 zip 可以更好地处理文件。等效命令将是 zip whatever.zip - 压缩,'funzip whatever.zip > whatever.csv' 取消压缩