鱼C论坛

 找回密码
 立即注册
查看: 2712|回复: 16

[已解决]关于检索文件内容的

[复制链接]
发表于 2023-12-4 14:51:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
条件1:
执行过程为     py   example.py   xxxxxx目录
结果为  file1 文件 包含   xxx 字符串
            file11 文件 包含   xxx 字符串
            file111 文件 包含   xxx 字符串
或者      该目录没有文件包含xxx字符串
条件二:
可以把扩展名限定为py(纯文本文件)
条件三:
可以把目录深度限定为一层
           
最佳答案
2023-12-4 14:56:12
wp231957 发表于 2023-12-04 14:55
两点不符,
1、目录名称 由命令行参数给出    关键字 ...

非常抱歉理解错误。以下是修改后的代码,满足你的需求:
  1. import os
  2. import sys
  3. def search_files(directory, keyword):
  4.     files = [f for f in os.listdir(directory) if f.endswith(".py")]
  5.     found = False
  6.     for file in files:
  7.         file_path = os.path.join(directory, file)
  8.         with open(file_path, "r") as f:
  9.             content = f.read()
  10.             if keyword in content:
  11.                 print(f"文件 {file_path} 包含 {keyword} 字符串")
  12.                 found = True
  13.     if not found:
  14.         print(f"该目录下没有文件包含 {keyword} 字符串")
  15. # 使用示例
  16. if len(sys.argv) < 3:
  17.     print("请提供目录路径和关键字参数")
  18. else:
  19.     directory = sys.argv[1]
  20.     keyword = sys.argv[2]
  21.     search_files(directory, keyword)
复制代码

你需要在命令行中执行类似以下形式的指令:
  1. python example.py 目录路径 关键字
复制代码

其中,`目录路径`为你要搜索的目录的路径,`关键字`为你要搜索的字符串。

这段代码会遍历指定目录下的所有.py文件,打开并读取其内容,然后判断是否包含指定的关键字。如果找到了包含关键字的文件,则输出文件路径和关键字字符串;否则,输出指定目录下没有文件包含关键字字符串的信息。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-4 14:55:53 | 显示全部楼层
FishC_GPT 发表于 2023-12-4 14:51
你可以使用以下代码来实现检索指定目录下文件内容是否包含指定字符串的功能:

两点不符,
1、目录名称 由命令行参数给出    关键字也由命令行参数给出   而不是函数的参数
2、也不需要递归   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:00:52 | 显示全部楼层
FishC_GPT 发表于 2023-12-4 14:56
非常抱歉理解错误。以下是修改后的代码,满足你的需求:

这个看起来很好,待测试
不过   复制粘贴到vscode的文本框里面   没有断行符  是什么鬼   始终一直是这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:06:54 | 显示全部楼层
FishC_GPT 发表于 2023-12-4 15:01
非常抱歉给您带来困扰。在这种情况下,您可以修改代码,将命令行参数作为输入参数传递给函数。以下是修改 ...

代码没问题了,功能没问题
现在的问题就是复制代码到vscode文本框 就是一行   怎么破
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:15:29 | 显示全部楼层
FishC_GPT 发表于 2023-12-4 15:07
非常抱歉给您带来困扰。您在VSCode的文本框中复制代码后出现了一行的问题,可能是由于复制时格式被损坏导 ...

这个我又进行了测试,,,,发现 真的不怨vscode   我把代码复制到windows自带的记事本里面  
也是一行,没有断行符  也没有回车符,,经过winhex 检查  代码行之间 只有一个   空格符
这不知道是谁的锅
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:16:59 | 显示全部楼层
人造人 发表于 2023-12-4 15:11
这不就是 grep 么
https://www.runoob.com/linux/linux-comm-grep.html

是的,可是windows有没有啊   我不清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:18:13 | 显示全部楼层
FishC_GPT 发表于 2023-12-4 15:15
非常抱歉给您带来困扰。出现一行代码的问题可能是由于复制时格式被损坏导致的。您可以尝试以下方法来解决 ...

原来是可以通过代码框下面的复制代码   自由的拷贝数据的  
那现在咋就把回车和换行  都弄没了呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 15:25:41 | 显示全部楼层
人造人 发表于 2023-12-4 15:24
可以试试 cygwin

https://cygwin.com/

嗯,好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-28 04:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表