tft每日頭條

 > 科技

 > python批量分割

python批量分割

科技 更新时间:2024-11-20 14:32:19

背景:

最近在整理以前的老照片,也買了一個刻錄機,想将以前的老照片刻錄成光盤做一個備份。

但是碰到一個問題,老照片有幾百GB,每張光盤隻能存4.7 GB,就需要将文件夾進行分割。

刻錄軟件分割會将同一個文件數據切分到不同光盤。

想到用壓縮軟件,分卷壓縮,指定卷大小,但是這個方法有問題:

A:光盤上的文件沒法直接浏覽。

B:最終會刻錄幾十張盤,如果有一張損壞或者遺失,整個數據就會丢失。

網上找了 Folder Axe,可以将文件夾按大小切分,但是他将文件整體平鋪切分到指定目錄下,沒有保留原文件路徑信息。

找了半天,沒辦法,隻好自己用python寫了一個工具來切分文件夾,滿足如下功能:

1:可以指定切分後文件夾大小,保證切分後每個文件夾小于等于指定大小。

2:保留原目錄結構(備注:一個子文件夾可能會被切分到多個目标文件夾下)。


用法:

python filesplit.py 源文件夾 目标文件夾 大小(單位 GB,4.7GB則輸入 4.7)


import os import shutil import sys import os g_src_dir = '' g_dst_dir = '' g_folder_index = 0 g_cd_size = 4.7 g_sum_size = 0 def SplitFolder(src_dir_name): try: ls=os.listdir(src_dir_name) isexists=os.path.exists(g_dst_dir) if not isExists: os.makedirs(g_dst_dir) except Exception as e : print 'dir error.' repr(e) else: for fn in ls: tempfile=os.path.join(src_dir_name,fn) if (os.path.isdir(tempfile)): SplitFolder(tempfile) else: temprealpth = tempfile[len(g_src_dir) 1:] try: size = os.path.getsize(tempfile) global g_sum_size if g_sum_size size > (g_cd_size -0.1)*1000*1000*1000 : g_sum_size = 0 global g_folder_index g_folder_index = g_folder_index 1 g_sum_size = g_sum_size size dstpath = os.path.join(os.path.join(g_dst_dir,'cd' str(g_folder_index)),temprealpth) (tempfilepath, tempfilename) = os.path.split(dstpath) isExists = os.path.exists(tempfilepath) if not isExists: os.makedirs(tempfilepath) print 'mv file:' tempfile ':' dstpath cmd = 'cp -f "' tempfile '" "' dstpath '"' cmdnew = cmd.replace('\\','\\\\') #print cmdnew #os.system (cmdnew) shutil.copy2(tempfile, dstpath) except Exception as e : print 'error path:' tempfile print 'error.' repr(e) print('mv end!') if __name__ == "__main__": if len(sys.argv) < 3 : print(" args < 3") print 'sourcepath dstpath size(ex:4.7)' exit() g_src_dir = sys.argv[1] g_dst_dir = sys.argv[2] g_cd_size = float(sys.argv[3]) g_folder_index = 0 print 'sourcepath: ' g_src_dir print 'dstpath: ' g_dst_dir print 'size: ' str(g_cd_size) SplitFolder(g_src_dir)


python批量分割(python寫的文件夾分割工具)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved