From d7d29ee3bdd31a7d47335421a4dcaa34efb15dc4 Mon Sep 17 00:00:00 2001 From: Gaodong <1120496618@qq.com> Date: Thu, 16 Jul 2020 17:21:08 +0800 Subject: [PATCH] #60 fixed done with "write script to compress folder and files " --- .../README.md | 11 ++++ .../zipfiles.py | 52 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 projects/write script to compress folder and files/README.md create mode 100644 projects/write script to compress folder and files/zipfiles.py diff --git a/projects/write script to compress folder and files/README.md b/projects/write script to compress folder and files/README.md new file mode 100644 index 000000000..4a267b216 --- /dev/null +++ b/projects/write script to compress folder and files/README.md @@ -0,0 +1,11 @@ +## write script to compress folder and files + +### usage + +python zipfiles.py file_name(or folder name) + +example: + python zipfiles.py test.txt + python zipfiles.py ./test (folder) + +A Compressed file("filename.zip") will be generated after the program is run \ No newline at end of file diff --git a/projects/write script to compress folder and files/zipfiles.py b/projects/write script to compress folder and files/zipfiles.py new file mode 100644 index 000000000..ae8968467 --- /dev/null +++ b/projects/write script to compress folder and files/zipfiles.py @@ -0,0 +1,52 @@ +import zipfile +import sys +import os + + +# compress file function +def zip_file(file_path): + compress_file = zipfile.ZipFile(file_path + '.zip', 'w') + compress_file.write(path, compress_type=zipfile.ZIP_DEFLATED) + compress_file.close() + + +# Declare the function to return all file paths of the particular directory +def retrieve_file_paths(dir_name): + # setup file paths variable + file_paths = [] + + # Read all directory, subdirectories and file lists + for root, directories, files in os.walk(dir_name): + for filename in files: + # Create the full file path by using os module. + file_path = os.path.join(root, filename) + file_paths.append(file_path) + + # return all paths + return file_paths + + +def zip_dir(dir_path, file_paths): + # write files and folders to a zipfile + compress_dir = zipfile.ZipFile(dir_path + '.zip', 'w') + with compress_dir: + # write each file separately + for file in file_paths: + compress_dir.write(file) + + +if __name__ == "__main__": + path = sys.argv[1] + + if os.path.isdir(path): + files_path = retrieve_file_paths(path) + # print the list of files to be zipped + print('The following list of files will be zipped:') + for file_name in files_path: + print(file_name) + zip_dir(path, files_path) + elif os.path.isfile(path): + print('The %s will be zipped:' % path) + zip_file(path) + else: + print('a special file(socket,FIFO,device file), please input file or dir')