python 文件搜索

练习:编写一个search(s)的函数,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出完整路径:

$ python search.py test
unit_test.log
py/test.py
py/test_os.py
my/logs/unit-test-result.txt

code:

# -*- coding: utf-8 -*-

‘‘‘

@author: spook 

‘‘‘

import os

num = 0

def search(dirPath,fileName):

    global num

    for y in os.listdir(dirPath):

        absPath = os.path.join(dirPath,y).decode(‘gbk‘).encode(‘utf-8‘)

        if os.path.isdir(absPath):

            try:

                search(absPath,fileName)

            except BaseException, e:

                continue

        elif (os.path.isfile(absPath) and os.path.split(absPath)[1]==fileName):

            num +=1

            print(‘found %s ‘%absPath.decode(‘gbk‘).encode(‘utf-8‘))

#search(‘D:\\CreateFromPDM‘,‘README.txt‘)
search(‘D:\\‘,‘README.txt‘)
print("%d founded"%num)

附:split与join

os.path.split()   按照路径将文件名和路径分割开,比如d:\\python\\python.ext,可分割为[‘d:\\python‘, ‘python.exe‘]

import os
print os.path.split(‘c:\\Program File\\123.doc‘)
print os.path.split(‘c:\\Program File\\‘)
-----------------output---------------------
(‘c:\\Program File‘, ‘123.doc‘)
(‘c:\\Program File‘, ‘‘)

os.path.join(path1[,path2[,......]])  split的逆过程

os.path.join(path1[, path2[, ...]])

将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。

>>> os.path.join(‘c:\\‘, ‘csv‘, ‘test.csv‘)

‘c:\\csv\\test.csv‘

>>> os.path.join(‘windows\temp‘, ‘c:\\‘, ‘csv‘, ‘test.csv‘)

‘c:\\csv\\test.csv‘

>>> os.path.join(‘/home/aa‘,‘/home/aa/bb‘,‘/home/aa/bb/c‘)

‘/home/aa/bb/c‘
时间: 2024-07-29 08:22:02

python 文件搜索的相关文章

Python文件搜索替换

1 #定义一个函数,带有4个参数 2 #x 表示要更新的文件名称 3 #y 表示要被替换的内容 4 #z 表示 替换后的内容 5 #s 默认参数为 1 表示只替换第一个匹配到的字符串 6 # 如果参数为 s = 'g' 则表示全文替换 7 def string_switch(x,y,z,s=1): 8 with open(x, "r", encoding="utf-8") as f: 9 #readlines以列表的形式将文件读出 10 lines = f.read

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

成功解决在Python文件上右键菜单无“Edit with IDLE”选项

我电脑是Win7旗舰版,之前电脑上安装的是Python2.6版本的,前两天为了体验一下Microsoft Excel与Python之间互操作, 下载并安装了DataNitro,在安装的时候脑残的安装了Python2.7.5,但是这两天在用的时候,发现之前安装的一些包后不能用了: print sys.path 才知道,Python的搜索路径变成了Python2.7.5的路径了,傻眼了,怎么办? 于是,一通百度,google之后,折腾了一个上午,终于搞定了: 首先,我在cmd里面是可以正常使用Pyt

Python文件输入输出

http://blog.csdn.net/pipisorry/article/details/37769669python文件输入输出教程 python文件中的读入科学计数法的数字 float(word_dist) 皮皮blog python文件读取 内置函数open() 得到一个文件对象(file object):open(filename, mode='r') 函数参数 1. 模式mode: 模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式

跨平台文件搜索工具

#!/usr/bin/env python # -*- coding:utf-8 -*- from Tkinter import * import tkMessageBox import tkFileDialog import os import fnmatch from ScrolledText import ScrolledText def func():     str1 = ent1.get()     str2 = ent2.get()     if not (str1 and str

Python 文件I/Oday14

本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: #!/usr/bin/python   print "Python is really a great language,", "isn't it?"; 你的标准屏幕上会产生以下结果: Python is really a grea

python 文件处理 -- 03 文件处理模块

1.os模块 1.1作用 文件目录管理.进程管理 http://www.cnblogs.com/now-fighting/p/3531464.html 1.2常用 os.name--判断现在正在使用的平台.Windows--nt; Linux--posix os.getcwd()--得到当前工作的目录. os.listdir(path)--指定所有目录下所有的文件和目录名,返回list. os.remove(path)--删除指定文件 os.mkdir(path [, mode=0777])--

Python 文件IO

Python 文件I/O 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: #!/usr/bin/python # -*- coding: UTF-8 -*- print ("Python 是一个非常棒的语言,不是吗?") 你的标准屏幕上会产生以下结果: Python 是一个非常棒的语言,不是吗? 读取键盘输入 在Python2提供了两个内置函数从标准输入读入一行文本,默

模块运用,文件搜索

'''面向过程编程 核心过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.然后干什么... 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点 复杂的问题流程化.进而简单化 缺点 扩展性极差 ''' # 接收用户输入用户名,进行用户名合法性校验,拿到合法的用户名def check_user(): while True: name = input('username>>').strip() if name.isalpha(): return name else: pr