• Python小程序 - 文件处理2 (使用AI工具 完整提问)


        针对需求,逐一提问,AIGC给出了准确有效的答案,如果一个完整的需求提给AIGC呢?
        另:有了这样的提问?还有多少需要手工调整呢?

        需求:给定目录 -- 需求持续补充中
        1)统计该目录及子目录下文件类型(以后缀区分)、文件数量(文件及文件夹、总量及不同类型数量)、绘制目录结构
        2)给定关键字,判断目录下文件是否包含该关键字:如果包含,输出该文件名、关键字个数、所处位置(行)
        。。。。。。。
        9)程序打包成 EXE 文件供外部使用

    逐一提问:
        提问1:python 查看目录及子目录文件列表
        提问2:python 判断文件后缀名
        提问3:python 判断当前文件后缀名是什么
        提问4:python 将不同后缀的文件名放入字典中并统计数据
        提问5:python,读取文件并判断文件中是否包含某个字段
        提问6:python,读取 doc 文件
        提问7:python,读取 excel 文件
        提问8:python,读取 pdf 文件
        提问9:python,读取 txt 文件
        提问10:python 使用xlrd xlwt读取office文件

    完整需求提问
        提问:使用python,编码完成以下需求
        0. 文件声明:

    1. #********************************************************************
    2. # Copyright (c) 2024,LeiXun Studio
    3. # All Rights Reserved.
    4. #
    5. # File Name: fileCheck.py
    6. # Summary: check files in folder: count and content
    7. #
    8. # @Version: 0.1
    9. # @Author: Roy
    10. # @Start Date: 2024/5/12
    11. #*********************************************************************

        1. 提示输入要统计的文件目录,变量名: folderPath
        2. 输出当前文件夹下所有子文件夹及文件列表,内容存在列表 fileList中,并输出文件数量,使用变量filecount
        3. 以文件后缀为区分,输入文件类型及对应的文件数量
        4. 输入要查找的字符串,变量名:querystr
        5. 在后缀为 txt, doc, excel, pdf文的文件中查找要查询的字符串,并输入对应的 文件名 及 查找字符串的数量,存在变量:strfile中

    >> 对比 CSDN创作助手 和 文心一言的输出
         - 都能较完整的输出需求所提问问题答案
         - 变量名,CSDN使用了驼峰命名法;文心一言使用原样
         - 提问:均以问题描述为基础进行备注,CSDN进行改造,复杂问题进行拆分;文心一言原样使用,添加了说明
         - 文件:CSDN在文件解析时只对标准文件进行了处理,异常未捕捉;文心一主更完善一些,特别是对于非标准库内容进行了必要的说明,对异常进行了容错处理

    提问主题CSDN创作助手文心一言
    0. 文件声明无输出无输出,但提示:文件头部声明  ...(保持原样)
    1. 提示输入要统计的文件目录,变量名: folderPath1. 提示并正确接收输入参数
    2. 变量名使用正确
    1. 提示并正确接收输入参数
    2. 变量名使用正确
    2. 输出当前文件夹下所有子文件夹及文件列表,内容存在列表 fileList中,并输出文件数量,使用变量filecount1. 文件列表内容输出正确
    2. 文件数量输出正确
    3. 变量名使用正确
    1. 文件列表内容输出正确
    2. 文件数量输出正确
    3. 变量名使用正确
    3. 以文件后缀为区分,输入文件类型及对应的文件数量1. 文件后缀识别正确
    2. 不同后缀文件数量输出正确
    1. 文件后缀识别正确
    2. 不同后缀文件数量输出正确
    4. 输入要查找的字符串,变量名:querystr1. 提示并正确接收输入参数
    2. 变量名使用正确
    1. 提示并正确接收输入参数
    2. 变量名使用正确
    5. 在后缀为 txt, doc, excel, pdf文的文件中查找要查询的字符串,并输入对应的 文件名 及 查找字符串的数量,存在变量:strfile中1. 错误提示
    UnicodeDecodeError: 'gbk' codec can't decode byte 0x8e in position 18: illegal multibyte sequence
    2. 调整代码添加 encoding后,仍报错,原因:不同类型使用的读取方法,需使用不同库
    3. 对文件类型限定进行了判断
    1. 错误处理:encoding='utf-8', errors='ignore'
    2. 对 doc, excel, pdf 特殊文件进行了说明:使用相应的库,并给出了特别说明
    3.  对文件类型限定进行了判断
    • CSDN创作助手 提问输出
      1. import os
      2. # 输入文件目录
      3. folderPath = input("请输入要统计的文件目录:")
      4. # 统计文件数量和输出文件列表
      5. fileList = []
      6. fileCount = 0
      7. # 遍历文件夹及其子文件夹
      8. for root, dirs, files in os.walk(folderPath):
      9. # 输出当前文件夹下的文件列表
      10. for file in files:
      11. fileCount += 1
      12. fileList.append(os.path.join(root, file))
      13. print(os.path.join(root, file))
      14. # 输出文件数量
      15. print("文件数量:", fileCount)
      16. # 统计文件类型及数量
      17. fileTypeCount = {}
      18. for file in fileList:
      19. # 获取文件后缀
      20. fileExtension = os.path.splitext(file)[1][1:].lower()
      21. if fileExtension in fileTypeCount:
      22. fileTypeCount[fileExtension] += 1
      23. else:
      24. fileTypeCount[fileExtension] = 1
      25. # 输出文件类型及数量
      26. print("文件类型及数量:")
      27. for fileType, count in fileTypeCount.items():
      28. print(fileType, ":", count)
      29. # 输入要查找的字符串
      30. queryStr = input("请输入要查找的字符串:")
      31. # 在指定类型的文件中查找字符串,并统计数量
      32. strFile = {}
      33. # 指定文件类型
      34. fileTypes = ["txt", "doc", "docx", "xls", "xlsx", "pdf"]
      35. # 遍历文件列表
      36. for file in fileList:
      37. # 获取文件后缀
      38. fileExtension = os.path.splitext(file)[1][1:].lower()
      39. # 判断文件类型是否在指定类型列表中
      40. if fileExtension in fileTypes:
      41. # 打开文件并搜索字符串
      42. with open(file, 'r') as f:
      43. content = f.read()
      44. count = content.count(queryStr)
      45. if count > 0:
      46. if file in strFile:
      47. strFile[file].append(count)
      48. else:
      49. strFile[file] = [count]
      50. # 输出文件名及查找字符串的数量
      51. print("文件名及查找字符串数量:")
      52. for file, counts in strFile.items():
      53. print(file, ":", sum(counts))
      54. 请将以上代码保存到名为"fileCheck.py"的文件中,并在命令行中运行python fileCheck.py来执行程序。
    • 文件一言 提问输出
      1. 为了完成上述需求,你可以使用Python的os模块来遍历文件夹,并使用glob模块来根据文件后缀进行过滤。此外,还需要使用collections模块中的Counter来方便地统计文件后缀和字符串出现的次数。以下是一个可能的实现:
      2. python
      3. import os
      4. import glob
      5. from collections import Counter
      6. # 文件头部声明
      7. # ...(保持原样)
      8. # 1. 提示输入要统计的文件目录
      9. folderPath = input("请输入要统计的文件目录: ")
      10. # 2. 输出当前文件夹下所有子文件夹及文件列表,并输出文件数量
      11. fileList = []
      12. for root, dirs, files in os.walk(folderPath):
      13. for file in files:
      14. fileList.append(os.path.join(root, file))
      15. # 也可以包含子文件夹,但在此示例中我们仅统计文件
      16. filecount = len(fileList)
      17. print(f"文件数量: {filecount}")
      18. # 3. 以文件后缀为区分,统计文件类型及对应的文件数量
      19. file_extensions = Counter(os.path.splitext(file)[1].lower() for file in fileList if '.' in file)
      20. print("文件类型及对应的文件数量:")
      21. for ext, count in file_extensions.items():
      22. print(f"{ext.lstrip('.')}: {count}")
      23. # 4. 输入要查找的字符串
      24. querystr = input("请输入要查找的字符串: ")
      25. # 5. 在后缀为 txt, doc, excel, pdf 的文件中查找要查询的字符串
      26. # 注意:excel 文件通常不是纯文本文件,但我们可以假设它们是 .csv 或 .xlsx(使用相应的库)
      27. # 这里为简化,我们仅处理 .txt, .doc(假设是文本格式)和 .pdf(使用外部工具如PyMuPDF或pdfminer)
      28. strfile = {}
      29. def count_strings_in_file(filepath, querystr):
      30. with open(filepath, 'r', encoding='utf-8', errors='ignore') as file: # 忽略编码错误
      31. return file.read().count(querystr)
      32. for file in fileList:
      33. _, ext = os.path.splitext(file)
      34. ext = ext.lower()
      35. if ext in ['.txt', '.doc', '.pdf']: # 注意:.doc 和 .pdf 的处理可能需要专门的库
      36. if ext == '.pdf':
      37. # 对于PDF文件,你需要使用如PyMuPDF或pdfminer等库来提取文本
      38. # 这里仅作为示例,我们跳过PDF文件的处理
      39. continue
      40. count = count_strings_in_file(file, querystr)
      41. if count > 0:
      42. strfile[file] = count
      43. # 输出结果
      44. print("包含查询字符串的文件名及对应的数量:")
      45. for file, count in strfile.items():
      46. print(f"文件名: {file}, 字符串数量: {count}")
      47. # ...(其他代码或结束标志)
      48. 注意:
      49. 这个示例假设.doc文件是以文本格式存储的,但实际上它们通常是二进制格式,你需要使用像python-docx这样的库来读取它们。
      50. 对于.pdf文件,你需要使用像PyMuPDF或pdfminer.six这样的库来提取文本内容。
      51. 在处理文件时,我添加了encoding='utf-8', errors='ignore'来避免编码问题导致的错误,但这可能会丢失一些非UTF-8编码的字符。
      52. 如果你的环境中没有安装处理PDF文件的库,你可能需要注释掉或跳过对PDF文件的处理。
  • 相关阅读:
    ​寒武纪思元370系列与飞桨完成II级兼容性测试,联合赋能AI落地实践
    MATLAB程序设计:牛顿迭代法
    如何在Tomcat中配置和使用Session共享!
    ZYNQ从vitis生成linux系统编译启动文件
    matlab学习笔记
    Spark(2)-基础tranform算子(一)
    JavaScript 2.0
    后端研发工程师面经——数据结构
    Windows通过ssh免密登录Ubuntu (3)
    Weblogic反序列化漏洞
  • 原文地址:https://blog.csdn.net/u012841352/article/details/138749742