【Python】GitHub投稿のテンプレ自動作成プログラムを実装する

【Python】GitHub投稿のテンプレ自動作成プログラムを実装する

こんにちは、しゃねろんです。
今回はGitHub投稿のテンプレ作成プログラムを実装したのでそれを記事にしていきます。

今回作成したコードはGitHubに投稿しているので、よければそちらもご覧ください!

https://github.com/Unigmos/MakeTemplate_for_GITHUB/blob/main/Ver1.3/MakeTemplate.py

今回実装したもの

タイトルで「GitHub投稿のテンプレ自動作成プログラム」なんて書きましたが、実装したものは大きく3つ

  • フォルダの作成
  • README.md の作成
  • 実行環境の作成

になります。
それぞれ詳しく説明していきます。

GitHubの方にコードは乗っていますが、一応このページにも載せておきます。
今回用いたコードはこちら↓

import os
import platform

#パス指定
file_name = "NewProjectFile(新しいファイル)"
dir_path = "../../" + str(file_name)
README_path = "../../" + str(file_name) + "/README.md"
memo_path = "../../" + str(file_name) + "/Ver1.0/実行環境.txt"

#フォルダ作成(重複時にはファイル作成をしない)
try:
    os.mkdir(dir_path)

    os.mkdir(dir_path + "/Ver1.0")

    #README作成
    readme_list = ["# Title<br>\n",
                   "## 機能<br>\n",
                   "### 変更履歴<br>",
                   "Ver1.0:初期バージョン"]

    with open (README_path, 'w', encoding = 'UTF-8') as r:
        for word in readme_list:
            r.write(word + "\n")

    #Pythonバージョン取得→メモ帳保存
    py_version = platform.python_version()
    os_name = platform.system()
    os_version = platform.version()

    with open (memo_path, 'w', encoding = 'UTF-8') as f:
        f.write("Python_Version:" + py_version + "\n")
        f.write("OS_Name       :" + os_name + "\n")
        f.write("OS_Version    :" + os_version)

except FileExistsError:
    print("FileExistsError:すでに同じ名前のフォルダが存在しています")

フォルダの作成

まずはフォルダの作成について説明していきます。
コードだと以下の部分に該当します。

import os

#パス指定
file_name = "NewProjectFile(新しいファイル)"
dir_path = "../../" + str(file_name)
#フォルダ作成(重複時にはファイル作成をしない)
try:
    os.mkdir(dir_path)

    os.mkdir(dir_path + "/Ver1.0")

    #中略

except FileExistsError:
    print("FileExistsError:すでに同じ名前のフォルダが存在しています")

まず os を import します。
os は標準ライブラリに入っているので、pip等からインストールする必要はありません。

次にパス指定ですがfile_nameには新しく生成するフォルダの名前を入力します。
dir_path についてですが、 file_name の前に「../」というものがついていますね。
端的に言うとこれは「一つ上の階層に移動してください」というものです。
プログラムではこれが2つついているので「二つ上の階層に移動してください」ということになります。

さて、フォルダの作成についてです。
os.mkdir() にてフォルダの作成を行います。
今回のプログラムのように()の中にパスを指定することもできます。

try が来たので except もついでに軽く解説を。
try は「とりあえず下の処理を行う」で except では「 try ができなかったら except の下にある処理を行う」です。
一言で表すなら「例外処理」です。

今回は同じファイルが存在していたら(FileExistsError)エラー文を出力しています。

README.mdの作成

次に README.md の作成について説明していきます。
コードだと以下の部分に該当します。

README_path = "../../" + str(file_name) + "/README.md"

#README作成
readme_list = ["# Title<br>\n",
               "## 機能<br>\n",
               "### 変更履歴<br>",
               "Ver1.0:初期バージョン"]

with open (README_path, 'w', encoding = 'UTF-8') as r:
    for word in readme_list:
        r.write(word + "\n")

README_path は先ほどと同様パスの指定です。
強いて言うなら「/」をつけることで指定したパスの「一つ下の階層に移動してください」みたいなものです。「../」とほぼ逆ですね。

次に readme_list についてです。
後でも説明しますが、ここでは README.md に入れる文字を挿入しています。
.md はマークダウンファイルと呼ばれるもので、詳しい説明は省きますが、文字を大きく表示できたり、表を作成できる等の機能を持つファイルを作成できるものです。

要はこんなもの↓

次に進みます。
with as 文によってファイルの読み書きを行う処理を行っています。
README.md をとりあえず変数 r においているんだなぁ程度で大丈夫です。

次にfor文です。
readme_list の中から要素を一つ取り出し、word としています。
取り出した要素の一つである word をr.write()にてREADME.md の中に書き込んでいきます。
ここの r が先ほどおいた ~as r: の r の部分です。
また、「+ “\n”」を入れることで改行する処理を追加しています。

実行環境の作成

最後に実行環境の作成について説明していきます。
コードだと以下の部分に該当します。

import platform

#Pythonバージョン取得→メモ帳保存
py_version = platform.python_version()
os_name = platform.system()
os_version = platform.version()

with open (memo_path, 'w', encoding = 'UTF-8') as f:
    f.write("Python_Version:" + py_version + "\n")
    f.write("OS_Name       :" + os_name + "\n")
    f.write("OS_Version    :" + os_version)

platform を import します。
platform も os と同様標準ライブラリに入っているため、pip等からインストールする必要はありません。

py_version、os_name、os_version に platform を用いて取得した情報を載せ、それを先ほどと同様にメモ帳に書き込むプログラムになります。

まとめ

今回はGitHub投稿のテンプレ作成プログラムについて実装しました。
GitHubにはEXE化されたファイルがアップロードされていますが、その方法はまた後程。

テーマ

現在使用中テーマは最新版

v.1.0v.2.0v.3.0v.3.1v.3.2v.3.3v.3.4v.3.5v.3.6v.3.7v.3.8v.shaneron選択しない(安定版)