Escenario: tome mi situación en el script como ejemplo. El script es adecuado para mover la ruta del archivo registrada en el archivo de Excel a la ruta especificada, como mover PDF.
import logging
import logging.handlers
import pandas as pd
import os
import shutil
import csv
from tqdm import tqdm
import time
def printf_Start():
with open("logo.txt", mode='r', encoding='utf8') as lo:
los = lo.read()
print(los)
#读取文件
def get_Path(fileNameE,sheet):
try:
df1 = pd.read_excel(fileNameE, sheet_name=sheet)
return df1
except:
print("请重新检查参数!或者检查源码设置。")
return None
#移动文件
def move_Files(df,new_dir,main_dir):
k = 0
m = 0
j=0
logger = logging.getLogger(__name__) # 实例化一个logger对象
logger.setLevel(level=logging.INFO)
# 创建一个文件句柄
file_handle = logging.FileHandler(filename=main_dir + "程序运行日志.log",encoding="utf-8", mode='w')
file_handle.setLevel(logging.INFO)
# 创建一个输出格式
fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handle.setFormatter(fmt) # 文件句柄设置格式
logger.addHandler(file_handle) # logger对象绑定文件句柄
#关闭
error = open(main_dir+'移动情况.csv','w',encoding='utf-8')
csv_writer = csv.writer(error)
csv_writer.writerow(["file_path","file_name","原因"])
f = open(main_dir+"移动文件日志.log", "w", encoding='utf-8')
text = ""
for i in tqdm(range(len(df))):
if os.path.exists(new_dir+str(df["file_name"][i])+".pdf"):
f.write("{} ".format(i+1)+"error--->Target目录已存在文件:{}".format(df["file_name"][i])+".pdf"+"\n")
k = k+1
csv_writer.writerow([new_dir+df["file_name"][i]+".pdf",str(df["file_name"][i])+".pdf",'Target目录已存在该pdf文件'])
logger.warning('This is an customer Warning Message: Countinue! {}移动失败!'.format(df["file_path"][i]) \
+'\n 在Target目录中已存在此文件,不过程序不会就此终止,程序将继续尝试移动其它文件!',exc_info=True)
continue
else:
try:
shutil.move(df["file_path"][i],new_dir+str(df["file_name"][i])+".pdf")
j= (j+1)
f.write("{} ".format(i+1)+"success--->移动成功!,移动前是:"+df["file_path"][i]+",移动后是:"+new_dir+str(df["file_name"][i])+".pdf"+"\n")
csv_writer.writerow([df["file_path"][i], str(df["file_name"][i]) + ".pdf", '移动成功'])
logger.info('This is an customer Info Message: Successfully! {}移动成功!'.format(df["file_path"][i]),exc_info=True)
text = text + str(i)
time.sleep(0.2)
except:
f.write("{} ".format(i+1)+"error--->Source目录不存在文件:{}".format(df["file_name"][i])+".pdf"+"\n")
m = m+1
csv_writer.writerow([df["file_path"][i],str(df["file_name"][i])+".pdf",'Source目录不存在该pdf文件'])
logger.warning('This is an customer Warning Message: Countinue! {}移动失败!'.format(df["file_path"][i]) \
+'\n 在Source目录中不存在此文件,不过程序不会就此终止,程序将继续尝试移动其它文件!',exc_info=True)
print("统计如下:")
print("Excel文件路径表共有{}条数据记录".format(len(df)),"一共移动{}个PDF文件".format(j))
print("有{}个pdf文件在Target目录已存在!【具体请查看 移动情况.csv 或者 日志.log】".format(k))
print("有{}个pdf文件在Source目录不存在! 【具体请查看 移动情况.csv 或者 日志.log】".format(m))
print("日志文件路径:{}".format(main_dir+'移动情况.csv'))
print("记录移动PDF文件日志的文件路径:{}".format(main_dir+"移动文件日志.log"))
print("记录程序运行日志的文件路径:{}".format(main_dir+"程序运行日志.log"))
print("*****--------(●'◡'●)---------*****")
f.close()
error.close()
print("* 提示!此次操作已完成! *")
print("*****--------(●'◡'●)---------*****")
start()
def get_dir():
print("--------------------------------------------------")
# 文件读取
fileNameE = input("请输入文件路径表的路径:") # 文件路径表
sheetName = input("请输入数据所在的Sheet的名称:")
# 移动文件
new_dir = input("请输入要移动到的那个文件夹的路径:") # 移动到的那个文件夹
main_dir = input("请输入日志文件想存放的文件夹路径:") # 脚本所在的文件夹
print("---------------------------------------------------")
return fileNameE,sheetName,new_dir,main_dir
def judes(fileNameE,sheetName,new_dir,main_dir):
jude = input("是否确定移动(确定输入y,重新来输入n):")
if jude == 'y':
try:
os.chdir(new_dir)
df = get_Path(fileNameE, sheetName)
if type(df) == None:
print("当前无法执行!请重新检查Sheet Name或者其它参数!或联系相关人员。")
else:
move_Files(df, new_dir, main_dir)
except:
print("无法找到路径!请重新输入!")
print("*****--------(●'◡'●)---------*****")
start()
elif jude == 'n':
print(" 提示!已进入重新输入路径: ")
print("*****--------(●'◡'●)---------*****")
start()
else:
print(" 提示!命令无效,请输入y或者n。 ")
print("*****--------(●'◡'●)---------*****")
judes(fileNameE,sheetName,new_dir,main_dir)
def start():
fileNameE, sheetName, new_dir, main_dir = get_dir()
judes(fileNameE, sheetName, new_dir, main_dir)
if __name__ == '__main__':
printf_Start()
# 脚本解释
print("输入示例:")
print("-----------------------------------")
print("请输入文件路径表的路径:E:\\\\SystemDesktop\\\\WorkSpaces\\\\脚本测试\文件路径表.xlsx")
print("请输入数据所在的Sheet的名称:Sheet1")
print("请输入要移动到的那个文件夹的路径:E:\\\\SystemDesktop\\\WorkSpaces\\\\脚本测试\\\\targetDir\\\\")
print("请输入日志文件想存放的文件夹路径:E:\\\\SystemDesktop\\\\WorkSpaces\\\\")
print("注意:\n 文件夹路径结尾要有\\\\, 路径中的\\都要有两个\\。")
print("请注意区分大小写字母。严重区分大小写。")
print("-----------------------------------")
start()
# E:\\SystemDesktop\\WorkSpaces\\脚本测试\文件路径表.xlsx
# E:\\SystemDesktop\\WorkSpaces\\脚本测试\\targetDir\\
# E:\\SystemDesktop\\WorkSpaces\\