好久没更新了,今天我来给大家展示一下我的处理文件程序的1.3版本,修复了已知bug,增加显示帮助命令、清屏命令、查看版本命令、回答exit退出命令。清理垃圾模块也更新啦!
现在,我把代码展示一下
#! python3.7.8
# -*- coding:utf-8 -*-
#作者:白客小李666
#创建日期:2022-11-28
#最新更新日期:2023-1-15
#版本号:v1.342
import os
import time
import shutil
import zipfile
import rarfile
from pathlib import Path
os.system("color B")
def main(answer):
"""主函数"""
if a == '1':#处理txt文件
print("读取txt文件回答1,写入txt文件回答2,附加到txt文件回答3,清空txt文件内容回答4")
txt_answer=input(">>>")
if txt_answer == '1': #读取文件
print("请输入文件路径及文件名......")
lujing=input(">>>")
try:
with open(lujing) as f_o:
contents=f_o.read()
print(f"数据:{contents}")
print(f"词汇数:{len(contents.split())}")
except:
if FileNotFoundError:
print("发生错误,未找到文件,也有可能是中文路径")
else:
print("""[-]error:无法打开文件,错误原因可能是:
2.此文件被加密保护
3.此文件是系统文件
""")
elif txt_answer == '2': #写入文件
print("请输入文件路径(为了程序不出现bug,只能这样做,请谅解,谢谢!)")
filedir=input(">>>")
print("请输入文件名")
filename=input(">>>")
filedir_and_filename=filedir+filename
print("写入一行回答a,写入多行回答b")
one_or_lot=input(">>>")
if one_or_lot =='a':
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 one_or_lot =='b':
active=True
print("现在请输入您要写入的内容,输入完成请回答q")
datas=[]
while active:
message=input(">>>")
if message == 'q':
active=False
else:
datas.append(message)
try:
with open(filedir_and_filename,'w') as f_o:
for i in datas:
f_o.write(f"{i}\n")
print("创建文件成功!")
except:
print("没有此路径,是否为此文件创建新文件夹?")
print("(回答yes或no)")
yes_or_no=input(">>>")
if yes_or_no == 'yes':
os.makedirs(filedir)
time.sleep(0.2)
print("创建文件夹成功!")
time.sleep(0.2)
with open(filedir_and_filename,'w') as f_o:
for i in datas:
f_o.write(f"{i}\n")
print("创建文件成功!")
else:
print("好的,将不创建文件夹和文件")
elif txt_answer == '3': #附加到文件
print("附加一次请回答a,多次请回答b")
one_or_lot=input(">>>")
if one_or_lot == 'a':
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:无法附加到文件,原因可能是:
2.此文件被加密保护
3.此文件是系统文件""")
elif one_or_lot == 'b':
print("请输入路径和文件名......")
fd_and_fn=input(">>>")
print("现在开始输入内容,停止输入答'q'......")
messages=[]
active=True
while active:
message=input(">>>")
if message == 'q':
active =False
else:
messages.append(message)
try:
with open(fd_and_fn,'a') as f_o:
for i in messages:
f_o.write(f"\n{i.lstrip()}")
time.sleep(0.2)
print("完成!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("""
[-]error:无法附加到文件,原因可能是:
2.此文件被加密保护
3.此文件是系统文件""")
elif txt_answer == '4':#清空文件内容
print("这是清空文件数据,慎用!")
print("请输入文件路径和文件名")
fd_and_fn=input(">>>")
try:
with open(fd_and_fn,'a+') as f_o:
f_o.truncate(0)
print("清空成功!")
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,无法清空")
else:
print("无效指令")
elif a == '2': #复制文件
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 == '3': #移动文件
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 == '4':#删除文件
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 == '5':#处理zip文件
p=Path.home()
print("读取zip文件答a,解压文件答b,创建压缩文件答c,把文件附加到压缩文件答d")
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}'
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("读取完成!")
thezip.close()
elif see_answer == 'n':
thezip.close()
else:
thezip.close()
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能读取")
elif zip_answer == 'b':
print("请指定zip文件路径和zip文件")
zip_file_lujing=input(">>>")
try:
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("完成!")
thezip.close()
except:
if FileNotFoundError:
print("发生错误,未找到文件")
thezip.close()
else:
print("发生其他错误,未能解压")
thezip.close()
elif jieya == 'b':
print("请指定文件,选取完成回答q")
active=True
jieya_files=[]
while active:
jieya_file=input(">>>")
if jieya_file == 'q':
active=False
else:
jieya_files.append(jieya_file)
print("请指定解压路径......")
jieya_lujing=input(">>>")
finish_files=0
Fail_files=[]
fail_files=0
for f in jieya_files:
try:
thezip.extract(f,jieya_lujing)
finish_files+=1
except:
fail_files=fail_files+1
Fail_files.append(f)
print("解压完成!")
thezip.close()
print(f"其中解压失败的文件有{fail_files}个,它们是:")
print(Fail_files)
except:
if FileNotFoundError:
print("无此文件")
else:
print("发生错误,未能控制此文件")
elif zip_answer == 'c':
print("请指定zip文件路径和zip文件")
zip_file_lujing=input(">>>")
try:
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)
newzip.close()
except:
print("无法创建文件")
elif zip_answer == 'd':
print("请指定zip文件路径和zip文件")
zip_file_lujing=(">>>")
try:
thezip=zipfile.ZipFile(f'{zipfile_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:
thezip.write(os.path.join(f))
finish_files=finish_files+1
except:
fail_files=fail_files+1
Fail_files.append(f)
thezip.close()
print("完成!")
print(f"其中压缩失败的文件有{fail_files}个,它们是:")
print(Fail_files)
except:
if FileNotFoundError:
print("无此文件")
else:
print("无法添加到此压缩文件中")
else:
print("无效指令")
elif a =='6':#处理rar文件
p=Path.home()
print("读取rar文件答a,解压文件答b")
zip_answer=input(">>>")
if zip_answer == 'a':
try:
print("请指定rar文件路径和rar文件")
zip_file_lujing=input(">>>")
thezip=rarfile.RarFile(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}'
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("读取完成!")
thezip.close()
except:
if FileNotFoundError:
print("发生错误,未找到文件")
else:
print("发生其他错误,未能读取")
elif zip_answer == 'b':
print("请指定rar文件路径和rar文件")
zip_file_lujing=input(">>>")
try:
thezip=rarfile.RarFile(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("完成!")
thezip.close()
except:
if FileNotFoundError:
print("发生错误,未找到文件")
thezip.close()
else:
print("发生其他错误,未能解压")
thezip.close()
elif jieya == 'b':
print("请指定文件,选取完成回答q")
active=True
jieya_files=[]
while active:
jieya_file=input(">>>")
if jieya_file == 'q':
active=False
else:
jieya_files.append(jieya_file)
print("请指定解压路径......")
jieya_lujing=input(">>>")
finish_files=0
Fail_files=[]
fail_files=0
for f in jieya_files:
try:
thezip.extract(f,jieya_lujing)
finish_files+=1
except:
fail_files=fail_files+1
Fail_files.append(f)
print("解压完成!")
thezip.close()
print(f"其中解压失败的文件有{fail_files}个,它们是:")
print(Fail_files)
except:
if FileNotFoundError:
print("无此文件")
else:
print("无法控制此文件")
else:
print("无效指令")
elif a == '7':#遍历目录
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 == '8':
print("开始清理垃圾!")
try:
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}")
clean=os.system("del /f /s /q %Temp%")#因为暂时无法用python定位用户的temp文件夹路径,所以只能用os.system模块去删除了.注:此文件夹删除失败的文件不会被记录
cls=os.system(r'cls')
time.sleep(1)
print(" ")
print("清理完成!")
time.sleep(0.7)
print(f'有{fail_files}个文件清除失败')
print(f"它们是:{Fail_files}")
except:
print("无法清理垃圾,请先切换到管理员模式......")
elif a == 'help':
print("""
指令如下:
1:处理txt文件
2:复制文件或文件夹
3:移动文件或文件夹
4:删除文件或文件夹
5:处理zip文件
6:处理rar文件
8:遍历目录
9:清理垃圾
help:显示帮助
cls:清屏
ver:查看版本号
exit:退出""")
elif a == 'cls':
cls=os.system(r'cls')
elif a == 'ver':
print("Process Files System[版本1.344]")
elif a == '':
pass
else:
print(f"'{a}'不是内部指令")
if __name__ =='__main__':
print("Process Files System[版本1.3]")
show_commands="""
请输入处理文件指令,指令如下:
1:处理txt文件
2:复制文件或文件夹
3:移动文件或文件夹
4:删除文件或文件夹
5:处理zip文件
6:处理rar文件
7:遍历目录
8:清理垃圾
help:显示帮助
cls:清屏
ver:查看版本号
exit:退出"""
print(show_commands.lstrip())
while True:
a=input(">")
if a == 'exit':
break
else:
main(a)
time.sleep(0.5)
input("press enter to exit......")
以上就是我的代码,如果还是有问题,请大家指出,谢谢!