美文网首页
python练习:如何实现文件归类

python练习:如何实现文件归类

作者: 纷飞清扬 | 来源:发表于2018-04-22 16:13 被阅读619次

    要求:文件素材压缩包 problem2_files.zip,使用 Python 进行这样的操作:

    1. 把 jpg,png,gif 文件夹中的所有文件移动到 image 文件夹中,然后删除 jpg,png,gif 文件夹
    2. 把 doc,docx,md,ppt 文件夹中的所有文件移动到 document 文件夹中,然后删除


      文件素材包.png

      思路:先理解要求。对有关文件的操作,要用到Python的内置模块os模块。
      1.如何浏览各个文件夹:用os.listdir函数和for函数配合使用。因为有七个文件夹,所以要用到for函数的嵌套
      2.如何创建目标文件夹:os.makedirs函数
      3.如何移动文件到目标文件夹:shutil模块的move函数
      4.如何删除文件夹:os.removedirs函数
      以下是自己写的代码

    import os
    import shutil
    path = 'C:/Users\mandy\Desktop\problem2_files'
    folder1 = path + '/image'
    folder2 = path + '/document'
    os.makedirs(folder1)
    os.makedirs(folder2)
    list1 = ['jpg','png','gif'] 
    list2 = ['doc','docx','md','ppt']
    #字符串要用单引号括起来
    
    for fo1 in range(len(list1)):
        folderlist1 = path + '/' + list1[fo1]
        files1 = os.listdir(folderlist1)
        for f1 in files1:
            shutil.move(folderlist1+'/'+f1,folder1)
            #shutil.move里面是两个路径才运行成功
        os.removedirs(folderlist1)
    for fo2 in range(len(list2)):
        folderlist2 = path + '/' + list2[fo2]
        files2 = os.listdir(folderlist2)
        for f2 in files2:
            shutil.move(folderlist2+'/'+f2,folder2)
        os.removedirs(folderlist2)
    

    代码运行成功,符合要求
    以下是参考答案、

    import os
    import shutil
    # 需要把路径替换成你的文件夹所在路径,当把这个代码文件放在要处理的文件夹外一层时,可以使用下面的相对路径写法
    path = './problem2_files'
    # 创建目标文件夹
    os.makedirs(path + '/image')
    os.makedirs(path + '/document')
    # 将需要处理的后缀名存储到list中
    image_suffix = ['jpg', 'png', 'gif']
    doc_suffix = ['doc', 'docx', 'ppt', 'md']
    # 移动jpg、png、gif文件中的文件
    for i in image_suffix:
        cur_path = path + '/' + i
        files = os.listdir(cur_path)
        for f in files:
            # 移动文件夹中的文件
            shutil.move(cur_path + '/' + f, path + '/image')
        # 删除文件夹
        os.removedirs(cur_path)
    # 移动doc、docx、md、ppt文件夹中的文件,步骤与前面类似
    for d in doc_suffix:
        cur_path = path + '/' + d
        files = os.listdir(cur_path)
        for f in files:
            shutil.move(cur_path + '/' + f, path + '/document')
        os.removedirs(cur_path)
    

    总结:
    1.自己写的代码思路算是正确,最后通过提示还有网上搜索出错原因总算运行成功。参考答案的代码简洁,可读性比较强,自己要多多练习积极靠拢。
    2.字符串要用单引号括起来,如'jpg’,没用单引号,出错。
    3.敲代码时候自己很粗心,经常敲错变量名造成出错。找不到指定文件、路径。通过不同功能代码的测试,找出错误出现在哪一步,然后网上搜索,也明白了一些错误出现的原因
    4.此练习的思路和解决办法学习后,要顺便把出现的知识点也好好学习,如os、shutil模块里面的常用函数

    相关文章

      网友评论

          本文标题:python练习:如何实现文件归类

          本文链接:https://www.haomeiwen.com/subject/eptfpxtx.html