[python]ワークスペースコードのマージ(EXEプログラムへのパッケージを含む)
10247 ワード
(私は自分の:)を転載します.
なぜこのシナリオを作るのか
ここ数日、外で出張していますが、前に働いていたSVNはイントラネット環境なので、外(成都)ではSVNでコードをマージできません.仕方なく、手動で統合するしかありません.私たちはローカルコンピュータで、修正したコードをパッケージ化し、他の同僚に微信で送ります.But、問題が来て、Javaのコードは対応するパッケージの下に置く必要があります.微信で送信すれば、統合するときはJavaファイルごとのパッケージパスを知る必要があります.これは面倒ですね.SO、Pythonでこの問題を解決します.
優秀なコダー、コンピューターでサボるのが上手!
プログラムフロー(Python風のフローですよ)プロファイルを読み込む(他の同僚に使うため、プロファイルを修正するにはコードを修正する必要があるので便利) .ソース・パスの下にあるすべてのJavaファイルを巡回します. 現在遍歴しているJavaファイルのフルパスを取得 現在遍歴しているJavaファイルの宛先パスの下のパス(パッケージ名を介して) を取得ターゲットファイル をソースファイルに置き換える.
構成情報
私たちはJSON形式でデータを保存しています.これは書くのが面倒ですが、読みやすい(JSONパッケージで直接読むことができるので)注釈(#番号の先頭の部分)を外してください.
コード#コード#
コードはWindowsの下で使うのが一番いいし、Python 3も必要です.xの環境、サードパーティ製パッケージは不要
コードをEXEにパッケージ
ここではPyInstaller 3.4でパッケージ化されていますが、他のバージョンでは適用されるかどうか分かりません.以下はパッケージ化のコマンドです.
コマンドの説明:
-Fコードのメインエントリを指定します.ここにはPythonソースファイルが1つしかありません.このコードファイルを直接指定すればいいです.-nパッケージされたEXEプログラムの名前を指定します.-iconアイコンのパスを指定します.
ソース+EXEプログラム
ここをクリックしてダウンロードページにジャンプ
なぜこのシナリオを作るのか
ここ数日、外で出張していますが、前に働いていたSVNはイントラネット環境なので、外(成都)ではSVNでコードをマージできません.仕方なく、手動で統合するしかありません.私たちはローカルコンピュータで、修正したコードをパッケージ化し、他の同僚に微信で送ります.But、問題が来て、Javaのコードは対応するパッケージの下に置く必要があります.微信で送信すれば、統合するときはJavaファイルごとのパッケージパスを知る必要があります.これは面倒ですね.SO、Pythonでこの問題を解決します.
優秀なコダー、コンピューターでサボるのが上手!
プログラムフロー(Python風のフローですよ)
構成情報
私たちはJSON形式でデータを保存しています.これは書くのが面倒ですが、読みやすい(JSONパッケージで直接読むことができるので)注釈(#番号の先頭の部分)を外してください.
{
"target": {
"path": "E:\\Code\\Path" # , ,
},
"source": {
"path": ".\\source" # ,
}
}
コード#コード#
コードはWindowsの下で使うのが一番いいし、Python 3も必要です.xの環境、サードパーティ製パッケージは不要
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, json
#
def getConfig():
with open('main.conf', 'r', encoding='gbk') as f:
return json.load(f)
#
CONFIG = getConfig()
#
def getTargetPath(sfile):
# encoding GBK Java GBK
with open(sfile, 'r', encoding='gbk') as f:
#
lines = f.readlines()
#
for line in lines:
#
line = line.strip().lower()
# 'package' ,
# Java package ,
if line.startswith('package'):
# ,
packageName = line[7:-1].strip()
#
return os.path.join(
#
CONFIG['target']['path'],
#
packageName.replace('.', os.sep),
#
os.path.split(sfile)[-1]
)
#
def main():
#
for path in os.listdir(CONFIG['source']['path']):
# Java ,
if os.path.splitext(path)[-1] == '.java':
# Java
source = os.path.join(CONFIG['source']['path'], path)
# Java
target = getTargetPath(source)
#
os.replace(source, target)
#
main()
# ,
# , ,
# if __name__ == '__main__':
# os.system('pause')
コードをEXEにパッケージ
ここではPyInstaller 3.4でパッケージ化されていますが、他のバージョンでは適用されるかどうか分かりません.以下はパッケージ化のコマンドです.
pyinstaller -F MergeCode.py -n MergeCode --icon="icon.ico"
コマンドの説明:
-Fコードのメインエントリを指定します.ここにはPythonソースファイルが1つしかありません.このコードファイルを直接指定すればいいです.-nパッケージされたEXEプログラムの名前を指定します.-iconアイコンのパスを指定します.
ソース+EXEプログラム
ここをクリックしてダウンロードページにジャンプ