在Python中批量保存文件可以通过多种方式实现,以下是一些示例代码,展示了如何使用Python进行批量保存文件的操作:
示例1:按月份保存Word文档
import os
import re
from pprint import pprint
origin_dir = '原始文件/'
target_dir = '目标文件/'
files = os.listdir(origin_dir)
month_compile = re.compile('(20\d\d)([0-9])')
file_dict = {}
for file in files:
if file.endswith('.docx'):
word_file = os.path.join(origin_dir, file)
month = month_compile.search(word_file)
if month:
month = month.groups()
if month[-1] == '00':
month = re.search('(20\d\d)0([0-9])', word_file).groups()
t1 = '-'.join(month)
if t1 in file_dict.keys():
file_dict[t1].append(word_file)
else:
file_dict[t1] = [word_file]
for key, value in file_dict.items():
target_sub_dir = os.path.join(target_dir, key)
os.makedirs(target_sub_dir, exist_ok=True)
for file in value:
shutil.copy2(file, target_sub_dir)
pprint(file_dict)
示例2:使用Pandas保存文本数据
import pandas as pd
import os
import re
import jieba
设置当前工作路径
os.chdir('C:\\Users\\Administrator\\Desktop\\示例数据')
读取数据
data2 = pd.read_excel('3.xlsx')
data2_message = data2['详情']
def wenben(a):
b = 10000
for i in range(len(a)):
i_str = str(b + i + 1)
file_name = i_str + '.txt'
d = a[i]
f = open('3详情/' + file_name, 'w', encoding='utf-8')
f.write(d)
f.close()
wenben(data2_message)
示例3:使用zipfile进行文件压缩
import zipfile
import os
import time
start_dir = r'C:\Users\admin\Desktop\批量备份打包\压缩测试'
target_dir = r'C:\Users\admin\Desktop\批量备份打包\备份目的地文件夹'
today = target_dir + os.sep + time.strftime('%Y%m%d')
if not os.path.exists(today):
os.makedirs(today)
with zipfile.ZipFile(today + '.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
for root, _, files in os.walk(start_dir):
for file in files:
zf.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), start_dir))
示例4:按组保存文件
import os
folder_capacity = 20
def copy_files(src_dir, dest_dir):
count = 0
current_folder = ''
for item in os.listdir(src_dir):
abs_item = os.path.join(src_dir, item)
if os.path.isfile(abs_item):
count += 1
if count % folder_capacity == 1:
current_folder = os.path.join(dest_dir, str(count // folder_capacity))
os.mkdir(current_folder)
with open(os.path.join(current_folder, item), 'wb') as f:
with open(abs_item, 'rb') as source_file:
f.write(source_file.read())
copy_files(r'C:\src', r'C:\dest')
示例5:批量下载文件