比较来自世界各地的卖家的域名和 IT 服务价格

python-归档文件前移动到另一个目录?

假设我有此代码将文件移动到另一个目录:


import os, shutil

try:
os.chdir/rec.gec_daily_dir/
direct = os.listdir//src/dir//
for f in direct:
if f[-3:] == 'xls':
shutil.move/f, /archive/dir//
except TypeError:
print "Directory or file not found"


所以,我怎样才能归档 /或挤压/ 将其移动到目录前直接文件 antoher /无关紧要 zip 或者 tar.gz/? /源文件仅在存档状态中,而不是如何与手动存档一样,它离开源文件ungrate/

我看到那里 lib
tarfile

, 在那里可以做那样的地方,但我看到了几个归档整个目录的例子,但我需要单独存档每个文件。

例子

初始化状态


src/dir/


文件:


file1.xls, file2.xls

archive/dir


文件:没有

现在挤压文件并将它们移动到另一个目录:

完整的状态


src/dir/


文件:没有


archive/dir


文件:


file1.zip, file2.zip /or .gz/
已邀请:

窦买办

赞同来自:

档案并没有真正有意义,如果你要做的就是把一个文件放在他们每个人中。

或者您希望挤压它们,例如,使用模块
https://docs.python.org/3/library/gzip.html
或者
https://docs.python.org/3/library/bz2.html
?

如果您真的需要一个只需要一个文件的存档,请创建一个对象 tar 或者 ZIP 例如,立即添加它,例如
https://docs.python.org/3/libr ... e.add
.

请注意,虽然使用UNIX的操作系统时非常常见,但是使用UNIX操作系统来压缩各个文件 bz2 或者 gzip, 这是非常的

不是

例如,分布在其他平台上 Windows. 建议在那里使用 ZIP 即使是单个文件,文件也是如此,因为它们是由应用程序处理的很好 /Windows Explorer 和别的/.

将一个文件放在文件中 ZIP, 做一些类似的东西:


import zipfile
# ...

with zipfile.ZipFile/nameOfOrginalFile + ".zip", "w", zipfile.ZIP_DEFLATED/ as zip_file:
zip_file.write/nameOfOriginalFile/


如果没有传达
ZIP_DEFLATED


ZipFile

, 然后它掉了一个未压缩的文件 zip.

要压缩一个文件,请使用,例如, gzip:


import gzip

with gzip.GzipFile/nameoforiginalFile + ".gz", "w"/ as gz:
with open/nameoforignalfile/ as inp_file;
shutil.copyfileobj/inp_file, gz/



bz2


lzm

a /不可用 Python 2/ API是相同的,只是导入
bz2

/
lzma

并使用使用
bz2.BZ2File

.

两个街区后
with

您可以删除源文件。 /
os.remove/file/

/ 并将存档文件移动到所需位置。 此外,直接在正确的位置创建存档文件。 /
os.path.join

目标位置和存档的名称/.

董宝中

赞同来自:

标准库包含一个模块
https://docs.python.org/2/library/zipfile.html
与档案合作 .zip, 模块 gzip 使用压缩文件
.gz

和模块
https://docs.python.org/2/library/bz2.html
使用压缩文件
.bz2

/后者较慢,但提供更好的压缩/.

Python 3.3 还介绍 [lzma] /对于文件
.xz


.lzma

/, 这具有更好的压缩比,但似乎,不会回来 2.7.

笔记 , 一个文件不需要
.tar.gz

, 这将足够了
.gz

. 因为
.tar.gz

- 这是两个级别。
.tar

, 一起收集多个文件
.gz

, 挤它,如果你只有一个,你不需要第一部分。 Zip 制作两个东西,所以对于一个文件,它略低于 gz /他们使用相同的压缩方法/, 但是你可能有一些文件所了解的工具 zip, 不是文件 gz, 所以它可能有理由使用它。

创建一个压缩文件
https://docs.python.org/2/library/gzip.html
,
https://docs.python.org/2/library/bz2.html
或者 [lzma], 你只使用这个功能
open

从相应的模块然后使用
https://docs.python.org/2/library/shutil.html
.copyfileobj 将源文件的内容复制到存档。

要回复问题请先登录注册