そのため、製品名、ライセンス参照通知、著作権情報などを含むコメントヘッダーを上部に必要とするPythonファイル(実際には数百)がたくさんあります。バッチのような方法でこれを行うための最良の方法は何ですか?言い換えると、ヘッダーを指定するために使用できるツールと、*。pyフィルターまたはそれらの行に沿った何かとともにこのヘッダーを適用するディレクトリはありますか?ちなみに、すべてのヘッダー情報はすべてのファイルで同一です。
4 に答える
5
Bashバッチ構文:
for i in `find {DIRECTORY} -name "*.py"`; do
cat - $i > /tmp/f.py <<EOF
{HEADER_BLOCK}
EOF
mv /tmp/f.py $i
done
于 2012-12-10T00:22:05.220 に答える
1
実際に python 自体を使用して、pythonic の方法に従うことができます。
ファイルの先頭または末尾にテキストを追加するには、次を使用します。
with open('filename.py','rb') as f:
text = f.read()
text = prependText + text
text = text + postText
// whatever you want to manipulate with the code text
with open('filename.py','wb') as f:
f.write(text)
通常、Python モジュールはツリー構造を示すため、いつでもwalk関数 ( os.path.walk ) を使用して任意の深さのレベルに移動し、パスやファイル名に従って任意のカスタム ロジックを適用できます。
于 2012-12-10T01:20:09.897 に答える
1
バッチ アプローチの代わりに python 自体を使用する場合は、非常に単純化されたバージョンを次のように記述できます。
import os, sys
def main():
HEADER = '''# Author: Rob
# Company: MadeupOne
# Copyright Owner: Rob
'''
filelist = []
for path, dir, files in os.walk(sys.argv[1]):
for file in files:
if file.endswith('.py'):
filelist.append(path + os.sep + file)
for filename in filelist:
try:
inbuffer = open(filename, 'U').readlines()
outbuffer = [HEADER] + inbuffer
open(filename, 'wb').writelines(outbuffer)
except IOError:
print 'Please check the files, there was an error when trying to open %s...' % filename
except:
print 'Unexpected error ocurred while processing files...'
if __name__ == '__main__': main()
変更したいファイルを含むディレクトリを渡すだけで、パス上のすべての .py ファイルに再帰的に HEADER が追加されます。
于 2012-12-10T01:20:28.243 に答える