python处理文件程序v1.3

好久没更新了,今天我来给大家展示一下我的处理文件程序的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......")


            

以上就是我的代码,如果还是有问题,请大家指出,谢谢!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值