python 폴 더 를 재 귀적 으로 옮 겨 다 니 며 조건 에 맞 는 파일 경로 인 스 턴 스 를 인쇄 합 니 다.

제목:디 렉 터 리 에 있 는 모든 하위 파일 과 하위 폴 더 에 있 는 파일 이 필드 값 을 포함 하고 있 는 지,조건 에 맞 는 파일 의 절대 경 로 를 인쇄 합 니 다.

#!/user/bin/env python
# -*- coding:utf-8 -*-

#grep -rl "python" D:\devtools\workspace\python\aaa

import os

def init(func):
 def wrapper(*args,**kwargs):
  res=func(*args,**kwargs)
  res.send(None)
  return res
 return wrapper

@init
def search(target):
 '         '
 while True:
  dir_name=yield
  g=os.walk(dir_name)
  for i in g:
   for j in i[-1]:
    file_path="%s\\%s"%(i[0],j)
    target.send(file_path)
@init
def get_file_handle(target):
 '      '
 while True:
  file_path=yield
  with open(file_path) as f:
   target.send((file_path,f))

@init
def cat_file(target):
 '    '
 while True:
  file_path,f=yield
  for line in f:
   target.send((file_path,line))

@init
def printer(pattern):
 '           '
 s=set()
 while True:
  file_path,line=yield
  if pattern in line:
   if file_path not in s:
    print(file_path)
   s.add(file_path)


g=search(get_file_handle(cat_file(printer("python"))))
g.send("D:\\devtools\\workspace\\python\\aaa")
장식 기 를 사용 한 후,매번 실행 할 필요 가 없습니다.send(None),형 삼 target 은 생 성기 입 니 다.
전체 프로 그래 밍 은 과정 을 향 한 사고방식 을 채택 했다.
과정 을 향 해 전체 절 차 를 설계 해 야 한다.
그 장점 은 a.체계 구조 가 더욱 뚜렷 하 다 는 것 이다.b.절차 의 복잡 도 를 간소화 했다.
단점:확장 성 이 없 음(내부 결합 도가 너무 높 음)
구체 적 인 응용 장면:장기 적 으로 어떻게 변화 할 필요 가 없 는 소프트웨어 들.시스템
이 python 은 폴 더 를 재 귀적 으로 옮 겨 다 니 며 조건 에 맞 는 파일 경 로 를 인쇄 하 는 인 스 턴 스 는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 할 수 있 고 많은 지원 을 바 랍 니 다.

좋은 웹페이지 즐겨찾기