设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【每日一坑 4】 查找文件

[复制链接]

0

主题

0

好友

14

积分

新手上路

Rank: 1

31#
发表于 2018-7-3 10:34:50 |只看该作者
本帖最后由 lzt0810 于 2018-7-3 10:36 编辑
  1. import os
  2. import fnmatch
  3. input_path = input("请输入你要查找的目录:\n")
  4. input_keyword = input("请输入你要查找的关键字:\n")
  5. for path,dirnames,files in os.walk(input_path):
  6.     for filename in files:
  7.         if fnmatch.fnmatch(filename,input_keyword):
  8.         #if input_keyword in filename:
  9.             print(filename)
  10. print('...结束...')


  11. #input_keyword需要满足fnmatch的格式条件,例如需要搜索txt后缀的文件,前者只需要输入txt(区分大小写),后者需要输入*txt,但是后者可以满足模糊匹配,即输入*TXT亦可
复制代码
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

32#
发表于 2019-7-24 18:12:21 |只看该作者
本帖最后由 Kris_coding 于 2019-7-24 18:15 编辑

刚开始学,看前面几个的答案有点不能理解,然后搜索了 os.walk 的用法,搞了2、3个小时终于跑通了~
回帖庆祝
  1. # 找出指定文件夹中的所有以txt结尾的文件,包括所有嵌套的子文件夹。

  2. import os


  3. def findfile(path,rule = ".txt"):
  4.     txtlist = []
  5.     for fpathe,dirs,fs in os.walk(path):        # os.walk 获取所有目录
  6.         for f in fs:
  7.             filename = os.path.join(fpathe,f)
  8.             #print(filename)
  9.             if filename.endswith(rule):         # 判断是否用 .txt 结尾
  10.                 txtlist.append(filename)
  11.     return txtlist

  12. if __name__ == "__main__":
  13.     b = findfile(r"/desktop")
  14.     #print(b)
  15.     for i in b:
  16.         print(i)
  17.     print('一共有个 %d 个文件'%len(b))      # len 计算 b 的长度
复制代码
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

33#
发表于 2021-2-11 18:02:02 |只看该作者
搞了老半天,程序还是不太理想

老师能看看吗?希望有个评价或者建议,谢谢啦

程序对于文件夹嵌套比较少的勉强还行,多的就会出错

还是去好好学学评论里的那些函数吧!
  1. import os
  2. import fnmatch

  3. result = []

  4. print('输入指定文件夹的路径')
  5. print('(like this: C:\\Users\\Python37)')
  6. path_input = input('路径:')
  7. path_use = '\\\\'.join(path_input.split('\\'))

  8. jias = ['']
  9. ls_jias = []
  10. ls_path_use = path_use

  11. active = False
  12. while active == False:         
  13.     for b in range(len(jias)):
  14.         ls_jias = []
  15.         path_use += '\\\\'+jias[b]
  16.         for c in os.listdir(path_use):
  17.             if fnmatch.fnmatch(c,'*.txt'):
  18.                 result.append(c)
  19.             elif fnmatch.fnmatch(c,'*.*') == False:
  20.                 ls_jias.append(c)
  21.         if len(ls_jias) == 0:
  22.             path_use = ls_path_use
  23.         elif len (ls_jias) > 0:
  24.             ls_path_use = path_use
  25.     jias = ls_jias
  26.     # print(jias)
  27.     if len(jias) == 0:  #就表示里面不再含有文件夹
  28.         active = True
  29. print(result)
复制代码
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

34#
发表于 2021-2-12 21:54:17 |只看该作者
好好学了一些函数,现在彳亍啦!
  1. import os
  2. import fnmatch

  3. #files为该文件夹内的所有文件
  4. #fnmatch.fnmatch()得到布尔表达式
  5. dizhi = r'C:\Users\practice'
  6. result = []
  7. for root,dirs,files in os.walk(dizhi):
  8.     for file in files:
  9.         if fnmatch.fnmatch(file,'*.txt'):
  10.             result.append(file)
  11. print(result)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-21 18:17 , Processed in 0.024920 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部