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 -*-
'Search a file with its filename'
__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)==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)
http://www.cnblogs.com/maple42/p/data:image/png;base64,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
附: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'
页:
[1]