파이썬으로 파일 검색 및 프로그램 식별 코드 추출

목차



· 목적
· · 절차
・코드
・해설
・과제

목적



자사의 프로그램은 디렉토리에 저장되며 파일 1행에 식별 코드로 버전 관리합니다.
개발 단계에서 사용할 프로그램인지 여부는 식별 코드와 사양서를 비교하는 작업이 나오고 있습니다.
그 작업이 매우 번거롭기 때문에, 파일명과 식별 코드를 추출한 것을 텍스트 파일 출력시켜 단순화하고 싶다.

절차



1. 지정한 패스 부하·확장자 파일을 탐색한다
2. 파일 1행째의 문자열을 추출한다
3. "파일명 : 문자열"이라는 내용의 텍스트 파일을 출력한다

지정한 경로 부하는 다음과 같은 파일 구성으로 되어 있습니다.
파일 이름은 프로그래밍 방식으로 임의의 문자열입니다.





↓파일의 내용


코드



File_Finder.py

import os
from pathlib import Path
import re

Output_path = r"OUTPUT_PATH"
Search_path = r"SEARCH_PATH"

folder = []


# .c,.hファイルを探してリスト型データにする
def file_finder(_path):
    os.chdir(_path)
    temp = Path(_path)
    file_list = [p for p in temp.glob("**/*") if re.search(".(c|h)", str(p))]

    for path in file_list:
        if not os.path.isdir(path):
            folder.append(os.path.relpath(path, Search_path))
    return folder


# リストから全ファイルを開き、1行目だけを抜き出して閉じる。辞書型にして{相対path:"1行目"}となるようにする
def file_read(*folder_list):
    read_data = {}
    for j in folder_list:

        if os.path.isdir(j):
            with open(j, "r") as f:
                read_data[j] = f.readline()
            f.close()
        else:
            with open(j, "r") as f:
                read_data[j] = f.readline()
            f.close()
    return read_data


#  一つのテキストファイルとして出力する
def file_list_generator(**dictionary):
    os.chdir(Output_path)
    with open("soft_list.txt", "w") as f:
        for k, i in dictionary.items():
            temp = str(i).replace("/* ", "")
            temp = temp.replace(" */", "")
            f.write("{}  : {}\n".format(k, temp))
    f.close()


file_list = file_finder(Search_path)
file_dict = file_read(*file_list)
file_list_generator(**file_dict)


출력된 텍스트 파일은 이런 느낌입니다.


해설



함수마다 설명해 갑니다.

・・file_finder()        
・・file_read(list)      
・file_list_generator(*dict)

file_finder () # 경로 아래의 .c/.h 파일을 추출, 목록으로 반환



 

file_read(*list)       



file_list_generator(**dict)

좋은 웹페이지 즐겨찾기