python tar 多目录压缩脚本,使用tarfile(Python)只压缩给定目录中的文件
我已经编写了以下脚本,它允许我将src(可以是单个文件或目录)压缩到目标'dst':#!/usr/bin/env python2
import tarfile
from ntpath import basename, dirname
from os import path, listdir, makedirs, chdir
import errno
import sys
class Archivator:
@staticmethod
def compress(src='input/test', dst='output'):
# if not path.isfile(src_file):
# print('Expecting absolute path to file (not directory) as "src". If "src" does contain a file, the file does not exist')
# return False
if not path.isdir(dst):
return False
# try:
# makedirs(dst_dir)
# except OSError as err:
# if err.errno != errno.EEXIST:
# return False
filename = basename(src) if path.isdir(src) else src
tar_file = dst + '/' + filename + '.tar.gz'
print(tar_file)
print(src)
with tarfile.open(tar_file, 'w:gz') as tar:
print('Creating archive "' + tar_file + '"')
# chdir(dirname(dst_dir))
recr = path.isdir(src)
if recr:
print('Source is a directory. Will compress all contents using recursion')
tar.add(src, recursive=recr)
return True
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='Uses tar to compress file')
parser.add_argument('-src', '--source', type=str,
help='Absolute path to file (not directory) that will be compressed')
parser.add_argument('-dst', '--destination', type=str, default='output/',
help='Path to output directory. Create archive inside the directory will have the same name as value of "--src" argument')
# Generate configuration
config = parser.parse_args()
Archivator.compress(config.source, config.destination)
对于单个文件,到目前为止我还没有遇到问题。然而,尽管src(作为一个目录)的压缩确实有效(递归和所有),但我注意到一个非常恼人的问题,即完整的目录结构被复制到tar.gz归档文件中。在
示例:
假设我有以下文件结构:
^{pr2}$
使用src = 'updates/package1'和{}我希望得到的归档文件将放在dst内(这行得通)
包含file1和file2
关于第二点./
|---compression.py (script above)
|
|---updates/
| |
| |---package1/
| |
| |---file1
| |---file2
| |---dir/
| |
| |---file3
|
|---compressed/
|
|---package1.tar.gz
|
|---file1
|---file2
|---dir/
|
|---file3
但是我得到了./
|---compression.py (script above)
|
|---updates/
| |
| |---package1/
| |
| |---file1
| |---file2
| |---dir/
| |
| |---file3
|
|---compressed/
|
|---package1.tar.gz
|
|---updates/
|
|---package1/
|
|---file1
|---file2
|---dir/
|
|---file3
我可能无法找到解决方案。我甚至在src(如果是一个目录)中尝试了chdir-ing,但是没有成功。我的一些实验甚至导致了OSError(由于缺少它应该存在的目录)和一个损坏的存档。在
python tar 多目录压缩脚本,使用tarfile(Python)只压缩给定目录中的文件相关推荐
- linux shell 里面执行python 程序_Linux下编写脚本Shell和Python的区别?
思路和算法可以一样,但是语法不一样 例如求1+2+3+4+...,和超过10000停止, shell,c,python实现思路类似. 1.shell实现while循环 #!/bin/sh sum=0 ...
- 基于Python SimpleHTTPServer.py的修改脚本:HTTP文件服务器,修正中文目录列表,支持视频文件在线播放
# -*- coding: gbkimport SimpleHTTPServer import BaseHTTPServer import time import SocketServer impor ...
- python和易语言写游戏脚本_用Python写王者荣耀刷金币脚本
王者荣耀很多朋友都想买脚本和挂之类的,想更加容易的获得金币等可以在游戏里买英雄等,今天我们发挥程序员的优势教给大家用Python语言自己写一个可以刷金币的脚本,以下是全部内容. 王者荣耀的冒险模式里有 ...
- python怎么换行继续写脚本_用Python实现换行符转换的脚本的教程
很简单的一个东西,在'\n'.'\r\n'.'\r'3中换行符之间进行转换. 用法 代码如下: usage: eol_convert.py [-h] [-r] [-m {u,p,w,m,d}] [-k ...
- python在线编辑器import_maya_关于脚本编辑器导入python模块
import sys for p in sys.path: print p rigDir = 'C:\Users\lenovo\Documents\maya\scripts\python\rigLib ...
- python取数组最后一个元素_Python Json。只获取json数组中的最后一个元素
我刚开始尝试python,现在我有点左右为难.在 我试图从一个json文档打印,而我只得到数组中的最后一个元素.在[{ "FullMeasure": "1/2 cup&q ...
- python文件移动到文件夹_python – 将文件夹中的文件移动到顶级目录
我正在尝试为我的工作完成一个清理文件组织系统的脚本.我的脚本的最后一部分需要进入给定目录中的所有文件夹,并将每个文件夹中的所有文件移动到目录中.例如: import os path = 'C:/Use ...
- python文件名批量重命名脚本
python文件名批量重命名脚本 #encoding=utf-8 import cv2 import os import shutilbase_dir = r'文件所在的文件夹路径' SourseDi ...
- python解析原理_代码详解:Python虚拟环境的原理及使用
Python的虚拟环境极大地方便了人们的生活.本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理. 注意:本指南在macOS Mojave系统上使用最新版本的Python ...
最新文章
- 一次redis连接配置修改引发的redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.异常
- COALESCE()、isnull()、nullif()函数的用法
- Megacli恢复RAID0磁盘数据
- vimb java_vim 中更好的編輯 java 文件.
- 【Elasticsearch】我在 Elasticsearch 集群内应该设置多少个分片?
- 2020 年告别办公室!
- Phoca Gallery Images 去除 logo
- 拼多多的知识下乡,都长在希望的田野上
- 用把百分数转换成a,b,c,d,e等级
- Flutter 实现吹气球动画
- 马斯克11天强吞推特,全新商业帝国拼图完成
- 唐珂:国外农业物联网技术发展及对我国的启示
- 数据集成解决方案探讨
- 统计字符串英文字母个数
- Hive 分区表 分桶表
- 《那年花开月正圆》热播 让人深觉安防重要性
- 大学四年看了这18般书籍,我成了别人眼中的程序员大神!
- FFmpeg —— 查看NVIDIA显卡对硬件加速的支持
- 做PPT用到的实用且免费的网站
- 通过分箱对连续特征离散化,以提高线性模型的表现
热门文章
- 用emacs做笔记_3种用于记笔记的Emacs模式
- raspberry pi_如何使用Raspberry Pi测量颗粒物
- iosid不足以修改问题_寻找合作伙伴的技巧足以与您合作
- spring mvc 基于表单的认证过程及cookie应用和session管理
- HTML fieldset控件
- es6 Iterator(迭代器)的概念
- python彩票结果分析_天啦噜!Python多线程居然是骗人的?
- mlag 堆叠_三分钟了解VRRP、堆叠、M-LAG
- 大数据认证为什么学python_大数据为什么需要学python?
- 个人用户升级鸿蒙,老用户等到了!鸿蒙升级标准确定,“三岁”以下机型全更新...