linux查看python文件_linux下搜索文件的python方法

python方法来搜索文件,看看我写的方法是否可行。新手练习,多多指教!

python fsearch.py [-p] 'path1 path2 path3'

os、sys、glob、re是代码中需要用到的几个方法

如果加-p选项则为指定目录查找

如果在-p选项添加完后跟一个-d选项则为深度查找

#!/usr/bin/env python

import os, sys, glob, re

if sys.hexversion < 0x02040000:

print >> sys.stderr, 'Your python version is too old (%s)' % \

(sys.version.split()[0])

print >> sys.stderr, 'You need at least Python 2.4'

sys.exit(1)

PPATH = False

def search_all_files(pattern, search_path, pathsep=os.pathsep):

for path in search_path.split(pathsep):

'''

candidate = os.path.join(path, filename)

if os.path.isfile(candidate):

return os.path.abspath(candidate)

'''

for match in glob.glob(os.path.join(path, pattern)):

yield match

def print_file(pattern, path=None):

if PPATH:

p = path.split(' ')

path = lambda p : os.pathsep.join(p)

matches = list(search_all_files(pattern, path(p)))

if matches:

for match in matches:

print match

else:

print "Not find like '%s' !" % pattern

sys.exit(1)

else:

matches = list(search_all_files(pattern, os.environ['PATH']))

if matches:

for match in matches:

print match

else:

print "Not find like '%s' !" % pattern

sys.exit(1)

def deep_search(fpattern, path):

pathlist = path.split(' ')

finded = False

for p in pathlist:

if os.path.exists(p):

for dirpath, dirnames, filenames in os.walk(p):

for file in filenames:

fullpath = os.path.join(dirpath, file)

if re.search(fpattern, fullpath):

print fullpath

finded = True

else:

continue

else:

print "[*]Path %s don't exit !" % p

sys.exit(1)

if not finded:

print "Don't find like %s !" % fpattern

if __name__ == '__main__':

if '-p' in sys.argv:

PPATH = True

if '-d' not in sys.argv:

if len(sys.argv) != 4 or sys.argv[1].startswith('-'):

print "Usage %s -p 'path1 path2 path3....' use escape to split pathname" % sys.argv[0]

else:

print_file(sys.argv[1], sys.argv[3])

elif sys.argv[4] == '-d':

deep_search(sys.argv[1], sys.argv[3])

else:

if len(sys.argv) != 2 or sys.argv[1].startswith('-'):

print "Usage %s " % sys.argv[0]

sys.exit(1)

else:

print_file(sys.argv[1])

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/base/b2138.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值