今天,我终于把处理文件程序完成啦!本程序无bug,它的功能有九种,是:读取文件、写入文件
、附加到文件、复制文件或文件夹、移动文件或文件夹、删除文件或文件夹、处理zip文件、遍历目录、清理垃圾。本程序开始创作的日期:2022年11月28日;完成的日期:2023年1月7日,历时41天。(但是有一段时间没有编它)。
上代码:
#! python3.7.8
# -*- coding:utf-8 -*-
#作者:白客小李666
#创建日期:2022-11-28
#最新更新日期:2023-1-7
#版本号:v1.2
import os
import time
import shutil
import zipfile
import datetime
from pathlib import Path
os.system("color B")
def main(answer):
"""主函数"""
if a == '1': #读取文件
print("请输入文件路径及文件名......")
lujing=input(">>>")
try:
with open(lujing) as f_o:
contents=f_o.read()
print(f"数据:{contents}")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("""[-]error:无法打开文件,错误原因可能是:
1.文件编码不是utf-8(之后会改)
2.其他未列出的错误
""")
elif a == '2': #写入文件
print("请输入文件路径")
filedir=input(">>>")
print("请输入文件名(目前后缀只能用txt)")
filename=input(">>>")
filedir_and_filename=filedir + filename
print("请输入内容......")
neirong=input(">>>")
try:
with open(filedir_and_filename,'w') as f_o:
f_o.write(neirong)
print("创建文件成功!")
except:
print("没有此路径,是否为此文件创建新文件夹?")
print("(回答yes或no)")
yes_or_no=input(">>>")
if yes_or_no == 'yes':
os.makedirs(filedir)
time.sleep(0.2)
print("创建文件夹成功!")
with open(filedir_and_filename,'w') as f_o:
f_o.write(neirong)
time.sleep(0.2)
print("创建文件成功!")
else:
print("好的,将不创建文件夹")
elif a == '3': #附加到文件
print("请输入文件路径和文件名......")
fd_and_fn=input(">>>")
print("请输入内容......")
the_content=input(">>>")
try:
with open(fd_and_fn,'a') as f_o:
f_o.write(f"\n{the_content.lstrip()}")
time.sleep(0.2)
print("完成!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("""
[-]error:无法附加到文件,原因可能是:
1.编码不是uff-8
""")
elif a == '4': #复制文件
print("您是想复制文件还是文件夹?(复制文件答a,文件夹答b)")
copy_file_answer=input(">>>")
if copy_file_answer=='a':
print("请输入要复制的文件的路径和它的文件名......")
filelujing=input(">>>")
print("请输入您想要复制到的路径和复制后的文件的的文件名")
move_filelujing=input(">>>")
try:
shutil.copy(filelujing,move_filelujing)
print("复制成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能复制")
elif copy_file_answer=='b':
print("请输入文件夹路径和文件夹的名字")
dirlujing=input(">>>")
print("请输入要复制到的路径和复制后的文件夹的名字")
moved_wenjianjia_lujing=input(">>>")
try:
shutil.copytree(dirlujing,moved_wenjianjia_lujing)
print("复制成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能复制")
else:
print("无效指令")
elif a == '5': #移动文件
print("您是想移动文件还是文件夹?(移动文件答a,文件夹答b)")
move_file_answer=input(">>>")
if move_file_answer == 'a':
print("请输入文件路径和文件名......")
move_ffile_lujing=input(">>>")
print("请输入移动后的路径和文件名")
moved_file=input(">>>")
try:
shutil.move(move_ffile_lujing,moved_file)
print("移动成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能移动")
elif move_file_answer == 'b':
print("请输入文件夹路径和文件夹名称")
move_dir_lujing=input(">>>")
print("请输入移动后的位置")
moved_dir_lujing=input(">>>")
try:
shutil.move(move_dir_lujing,moved_dir_lujing)
print("移动成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能移动")
elif a == '6':#删除文件
print("这是删除文件!慎用!!!")
print("您是想删除文件还是文件夹?删除文件回答a,删除文件夹回答b")
del_file_or_dir=input(">>>")
if del_file_or_dir == 'a':
print("请输入您要删除的文件")
del_file=input(">>>")
try:
os.unlink(del_file)
print("删除成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能删除,可能是无法删除")
elif del_file_or_dir == 'b':
print("请输入您要删除的文件夹")
del_dir=input(">>>")
try:
shutil.rmtree(del_dir)
print("删除成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能删除,可能是无法删除")
else:
print("无效指令")
elif a == '7':#处理zip文件
p=Path.home()
print("读取zip答a,解压文件答b,创建和添加到压缩文件答c")
zip_answer=input(">>>")
if zip_answer == 'a':
try:
print("请指定zip文件路径和zip文件")
zip_file_lujing=input(">>>")
thezip=zipfile.ZipFile(p / f'{zip_file_lujing}')
files=thezip.namelist()
print("此压缩文件里面的文件有:")
print(files)
print("""
""")
print("是否要查看文件的信息?(y/n)")
see_answer=input(">>>")
if see_answer == 'y':
active=True
see_files=[]
print("请添加您要读取的文件,选取结束请回答q")
while active:
duqu_file=input(">>>")
if duqu_file == 'q':
active=False
else:
see_files.append(duqu_file)
for f in see_files:
try:
thezip.extract(f,"C:\Windows\Temp")
f_l=f'C:\Windows\Temp\{f}'
print(f_l)
try:
with open(f_l) as f_o:
contents=f_o.read()
print(f"数据:{contents}")
os.unlink(f_l)
except:
print("此文件暂时无法读取")
except:
if FileNotFoundError:
print("无此文件")
else:
print("无法解压......")
time.sleep(1)
print(" ")
print(" ")
print("读取完成!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能读取")
elif zip_answer == 'b':
print("请指定zip文件路径和zip文件")
zip_file_lujing=input(">>>")
thezip=zipfile.ZipFile(p / f'{zip_file_lujing}')
print("解压压缩包的所有文件答a,解压单个文件答b")
jieya=input(">>>")
if jieya == 'a':
print("请指定解压路径")
jieya_lujing=input(">>>")
try:
print("解压中......")
thezip.extractall(jieya_lujing)
time.sleep(0.5)
print("完成!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能解压")
elif jieya == 'b':
print("请指定文件")
jieya_file=input(">>>")
print("请指定解压路径......")
jieya_lujing=input(">>>")
try:
thezip.extract(jieya_file,jieya_lujing)
print("解压完成!")
except:
if FileNotFoundError:
print("未找到要解压的文件,解压失败")
else:
print("发生其他错误,未能解压")
elif zip_answer == 'c':
print("请指定zip文件路径和zip文件")
zip_file_lujing=input(">>>")
newzip=zipfile.ZipFile(f'{zip_file_lujing}','w')
yasuo_files=[]
active=True
print("现在请开始添加您想压缩的文件,选取结束请答q")
while active:
the_yasuo_file=input(">>>")
if the_yasuo_file == 'q':
active=False
else:
yasuo_files.append(the_yasuo_file)
print("开始压缩文件......")
finish_files=0
fail_files=0
Fail_files=[]
for f in yasuo_files:
try:
newzip.write(f'{f}',compress_type=zipfile.ZIP_DEFLATED)
finish_files=finish_files+1
except:
fail_files=fail_files+1
Fail_files.append(f)
print("完成!")
print(f"其中压缩失败的文件有{fail_files}个,它们是:")
print(Fail_files)
else:
print("无效指令")
elif a == '8':#遍历目录
print("请回答您要遍历的目录")
bianli_dir=input(">>>")
try:
for foldername,subfolders,filenames in os.walk(bianli_dir):
print('当前文件夹:'+foldername)
for subfolder in subfolders:
print('在'+foldername+'里的子文件夹:'+subfolder)
for filename in filenames:
print('在'+foldername+'里的文件:'+filename)
time.sleep(1)
print(" ")
print("遍历完成!")
except:
if FileNotFoundError:
print("没有此目录")
else:
print("此文件夹无法遍历")
elif a == '9':
print("开始清理垃圾!")
ls=os.listdir("C:\Windows\Temp")
fail_files=0
Fail_files=[]
for i in ls:
try:
os.unlink(f"C:\Windows\Temp\{i}")
except:
fail_files=fail_files+1
Fail_files.append(f"C:\Windows\Temp\{i}")
ls=os.listdir("C:\Windows\Prefetch")
for i in ls:
try:
os.unlink(f"C:\Windows\Prefetch\{i}")
except:
fail_files=fail_files+1
Fail_files.append(f"C:\Windows\Prefetch\{i}")
ls=os.listdir("C:\Windows\SoftwareDistribution\Download")
for i in ls:
try:
os.unlink(f"C:\Windows\SoftwareDistribution\Download\{i}")
except:
fail_files=fail_files+1
Fail_files.append(f"C:\Windows\SoftwareDistribution\Download\{i}")
ls=os.listdir("C:\Windows\System32\LogFiles")
for i in ls:
try:
os.unlink(f"C:\Windows\System32\LogFiles\{i}")
except:
fail_files=fail_files+1
Fail_files.append(f"C:\Windows\System32\LogFiles\{i}")
time.sleep(1)
print(" ")
print("清理完成!")
time.sleep(0.7)
print(f'有{fail_files}个文件清除失败')
print(f'它们是:{Fail_files}')
else:
print("无效指令")
if __name__ =='__main__':
print("Process Files System[版本1.2]")
show_commands="""
请输入处理文件指令,指令如下:
1:读取文件
2:写入文件
3.附加到文件
4.复制文件或文件夹
5.移动文件或文件夹
6.删除文件或文件夹
7.处理zip文件
8.遍历目录
9.清理垃圾"""
print(show_commands.lstrip())
while True:
a=input(">>>")
if a == 'q':
break
else:
main(a)
time.sleep(0.5)
input("press enter to exit......")
↑就是此程序的所有代码,请大家指点错误,我会再接再厉的!