案例:python實現代碼文件備份機
阿新 • • 發佈:2018-06-12
案例 文件備份機 管理目錄與文件
只想要我要的文件格式
# 遍歷
import re
re_filename = re.compile(‘(.*pdf$)|(.*docx$)|(.*xlsx$)‘)
for root,dir,files in os.walk(‘.‘): # 遍歷 當前路徑、目錄、文件,接著下級路徑、目錄、文件
print(root,dir,files)
. [‘目錄1‘, ‘目錄2‘] [‘3.1-管理目錄與文件w.pdf‘, ‘3.2-處理任意格式的文本文件w.pdf‘, ‘3.3-python操作辦公文件w.pdf‘, ‘a.docx‘, ‘b.xlsx‘, ‘絕密文件.pdf‘] .\目錄1 [] [‘1.txt‘] .\目錄2 [] [‘2.txt‘]
# 顯示根目錄內所有文件
import re
for root,dir,files in os.walk(‘.‘):
for name in files:
file = os.path.join(root,name) # 根目錄的文件
print(file)
.\3.1-管理目錄與文件w.pdf
.\3.2-處理任意格式的文本文件w.pdf
.\3.3-python操作辦公文件w.pdf
.\a.docx
.\b.xlsx
.\絕密文件.pdf
.\目錄1\1.txt
.\目錄2\2.txt
# 顯示根目錄內.pdf、.docx、.xlsx文件 import re re_filename = re.compile(‘(.*pdf$)|(.*docx$)|(.*xlsx$)‘) for root,dir,files in os.walk(‘.‘): for name in files: file = os.path.join(root,name) if re_filename.match(file): print(file)
.\3.1-管理目錄與文件w.pdf
.\3.2-處理任意格式的文本文件w.pdf
.\3.3-python操作辦公文件w.pdf
.\a.docx
.\b.xlsx
.\絕密文件.pdf
壓縮備份多個文件
# 創建壓縮文件 import zipfile my_zip = zipfile.ZipFile(‘busy.zip‘,‘w‘) # 以只寫的方式打開壓縮文件,並創建對象 my_zip.write(‘a.docx‘,compress_type=zipfile.ZIP_DEFLATED) my_zip.write(‘b.xlsx‘,compress_type=zipfile.ZIP_DEFLATED) my_zip.close() os.listdir()
[‘3.1-管理目錄與文件w.pdf‘,
‘3.2-處理任意格式的文本文件w.pdf‘,
‘3.3-python操作辦公文件w.pdf‘,
‘a.docx‘,
‘b.xlsx‘,
‘busy.zip‘,
‘目錄1‘,
‘目錄2‘,
‘絕密文件.pdf‘]
# 查看壓縮文件
see = zipfile.ZipFile(‘busy.zip‘,‘r‘) # 以只讀的方式打開文件,並創建對象
see.namelist()
[‘a.docx‘, ‘b.xlsx‘]
see.getinfo(‘a.docx‘)
<ZipInfo filename=‘a.docx‘ compress_type=deflate filemode=‘-rw-rw-rw-‘ file_size=0 compress_size=2>
see.close()
# 復制壓縮文件
import shutil
shutil.copy(‘busy.zip‘,‘busy-1.zip‘)
‘busy-1.zip‘
os.listdir()
[‘3.1-管理目錄與文件w.pdf‘,
‘3.2-處理任意格式的文本文件w.pdf‘,
‘3.3-python操作辦公文件w.pdf‘,
‘a.docx‘,
‘b.xlsx‘,
‘busy-1.zip‘,
‘busy.zip‘,
‘目錄1‘,
‘目錄2‘,
‘絕密文件.pdf‘]
# 解壓壓縮文件
busy = zipfile.ZipFile(‘busy-1.zip‘) # 創建對象
busy.extractall(‘目錄1‘) # 解壓到指定目錄
busy.close()
os.chdir(‘目錄1‘)
os.listdir()
[‘1.txt‘, ‘a.docx‘, ‘b.xlsx‘]
案例:代碼備份機
def auto_name():
pass
def zip_all():
pass
def zip_by_name():
pass
import zipfile
import os
def zip_all(from_dir,target_zip):
"""把目錄中的每個文件寫入zip文件"""
my_zip = zipfile.ZipFile(target_zip,‘w‘)
for root,dir,files in os.walk(from_dir): # 遍歷目錄內的所有目錄和文件,返回列表
for file in files: # 遍歷文件
filename = os.path.join(root,file) # 路徑+文件名
print(filename)
my_zip.write(filename,compress_type=zipfile.ZIP_DEFLATED) # 寫入文件
my_zip.close() # 關閉
def auto_name(source_name):
if source_name:
new_name = source_name.split(‘-‘)[0] + ‘-‘ + str(int(source_name.split(‘-‘)[1].split(‘.‘)[0])+1) + ‘.zip‘
return new_name
base_dir = r‘E:\迅雷下載‘ # 路徑
target_zip = os.path.join(base_dir,auto_name(‘a-1.zip‘)) # 需要新建的壓縮文件名
from_dir = os.path.join(base_dir,‘test‘) # 需要遍歷的目錄
zip_all(from_dir,target_zip)
E:\迅雷下載\test\a-1.txt
E:\迅雷下載\test\a-11.txt
E:\迅雷下載\test\a-2.txt
E:\迅雷下載\test\a-3.txt
案例:python實現代碼文件備份機