LoginSignup
2
4

More than 3 years have passed since last update.

Pythonでファイル探索&プログラム識別コードを抽出する

Last updated at Posted at 2019-10-17

目次

・目的
 ・手順
 ・コード
 ・解説
 ・課題

目的

自社のプログラムはディレクトリで保管され、ファイル1行目に識別コードでバージョン管理しています。
開発フェーズで使うプログラムかどうかは、その識別コードと仕様書を照らし合わせる作業が出てきています。
その作業がとても面倒なので、ファイル名と識別コードを抜き出したものをテキストファイル出力させて単純化したい。

手順

 1. 指定したパス配下・拡張子ファイルを探索する
 2. ファイル1行目の文字列を抽出する
 3. "ファイル名:文字列"という中身のテキストファイルを出力する 

指定したパス配下は、以下のようなファイル構成になっています。
ファイル名はプログラムでランダムな文字列です。

2019-10-21 221347.png

コメント 2019-10-21 221525.png

↓ファイルの中身
コメント 2019-10-21 221646.png

コード

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)

出力されたテキストファイルはこんな感じです。
2019-10-17 (6).png

解説

 関数毎に説明していきます。

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

file_finder() #パス配下の.c/.hファイルを抽出,リストで返す

 

file_read(*list)       

file_list_generator(**dict)

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4