import os
import sys
import openpyxl
import shutil
import xlrd
from openpyxl import load_workbook
count = 0
def remove_empty_subdirectories(directory):
for root, dirs, files in os.walk(directory, topdown=False):
for name in dirs:
subdirectory = os.path.join(root, name)
if not os.listdir(subdirectory):
os.rmdir(subdirectory)
def collect_file(source_folder='./collect',destination_folder='./new'):
if not os.path.exists(source_folder):
print("指定目录不存在")
return False
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
for root, dirs, files in os.walk(source_folder):
for file_name in files:
file_path = os.path.join(root, file_name)
target_file_path = os.path.join(destination_folder, file_name)
if not os.path.exists(target_file_path):
shutil.move(file_path, destination_folder)
else:
base, ext = os.path.splitext(file_name)
index = 1
while True:
new_file_name = f"{base}_{index}{ext}"
new_target_file_path = os.path.join(destination_folder, new_file_name)
if not os.path.exists(new_target_file_path):
shutil.move(file_path, new_target_file_path)
break
else:
index += 1
remove_empty_subdirectories(source_folder)
def move_file_sorted(folder_path, search_string, new_path=""):
if not os.path.exists(new_path):
os.makedirs(new_path)
for file_name in os.listdir(folder_path):
if search_string in file_name:
shutil.move(folder_path +file_name, new_path)
def move_renamed_file(folder_path, new_folder_path, search_string, is_test=True):
if not os.path.exists(new_folder_path):
os.makedirs(new_folder_path)
for file_name in os.listdir(folder_path):
if search_string == file_name:
old_path = os.path.join(folder_path, file_name)
new_path = os.path.join(new_folder_path, new_name)
if is_test:
print(f"文件 {file_name} 已重命名为 {new_name} 并存入新文件夹")
else:
os.rename(old_path, new_path)
def create_xlsx(file_name="default.xlsx", is_head=False, head_list=["学号", "姓名"]):
if os.path.exists(file_name):
os.remove(file_name)
workbook = openpyxl.Workbook()
sheet = workbook.active
if is_head:
sheet.append(head_list)
else:
print("no head")
workbook.save(file_name)
def append_data_to_excel(excel, new_data):
workbook = openpyxl.load_workbook(excel)
sheet = workbook["Sheet"]
sheet.append(new_data)
workbook.save(excel)
def read_xlsx(xlsx_name, sheet_name, start_row=0, column=0, is_print=True):
"""
:param xlsx_name: 指定excel表格的名字
:param sheet_name: 指定sheet工作表的名字
:param start_row: 指定从工作表第几行开始读取,默认是0
:param column: 指定读取工作表的第几列
:param is_print: 是否打印
:return: 返回操作的工作表
"""
workbook = load_workbook(filename=xlsx_name, read_only=True)
sheet = workbook[sheet_name]
if is_print:
for row in sheet.iter_rows(min_row=start_row, values_only=True):
print(row)
else:
return sheet
def move_dir(source_directory, target_directory, info_to_match, is_print=True):
"""
:param source_directory: 指定源文件夹路径
:param target_directory: 指定目标文件夹路径
:param info_to_match: 指定要匹配的信息
:return: 无
"""
count = 0
for root, dirs, files in os.walk(source_directory):
for directory in dirs:
if info_to_match in directory:
source_folder_path = os.path.join(root, directory)
target_folder_path = os.path.join(target_directory, directory)
shutil.move(source_folder_path, target_folder_path)
if is_print:
print(f"Moved folder: {source_folder_path} to {target_folder_path}")
def move_according_excel(xlsx_name, sheet_name, start_row=0, folder_path="", count=0):
workbook = openpyxl.load_workbook(xlsx_name)
work_sheet = workbook[sheet_name]
c = 0
for row in work_sheet.iter_rows(min_row=start_row, values_only=True):
yjs = row[0]
num = row[1]
name = row[2]
if num is None:
continue
search_string = str(num)
new_folder_path = "./照片(归类)/" + str(yjs)
if not os.path.exists(new_folder_path):
os.makedirs(new_folder_path)
flag = 0
for file_name in os.listdir(folder_path):
if search_string in file_name:
count = count + 1
flag = 1
old_path = os.path.join(folder_path, file_name)
newfileName = str(num) + str(name) + '.jpg'
new_path = os.path.join(new_folder_path, newfileName)
try:
print(count, f"成功将文件重命名为: {new_path}")
except FileNotFoundError:
print(count, f"文件{old_path}不存在,无法进行重命名")
print(newfileName)
print("finish")
return count
def to_new_excel(soure_excel="test.xlsx", soure_sheet="Sheet1",targer_excel="targer.xlsx"):
create_xlsx(file_name=targer_excel, is_head=True, head_list=["学号", "姓名", "答辩分数", "平均分"])
workbook = openpyxl.load_workbook(soure_excel)
work_sheet = workbook[soure_sheet]
for row in work_sheet.iter_rows(min_row=2, values_only=True):
num = row[0]
name = row[1]
score = row[2]
scores = score.split(",")
i = 0
sum = 0
avg = 0
for s in scores:
i = i + 1
sum = sum + int(s)
avg = sum / i
new_data = [num,name,score,avg]
append_data_to_excel(targer_excel, new_data)