まず対象となるファイルを適当に作成します。
script.cpp
#include "headers.h" bool CheckSig(vector<unsigned char> vchSig, vector<unsigned char> vchPubKey, CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
file_name = './script.cpp' with open(file_name) as f: data = f.readlines() data.insert(1, '// Copyright (c) 2009 Satoshi Nakamoto\n') with open(file_name, mode='w') as f: f.writelines(data)
これだと、全部書き変わってしまう…
copyright_header.pyだと、作者をファイルごとに定義しています。
COPYRIGHT_WITH_C = r'Copyright \(c\)' COPYRIGHT_WITHOUT_C = 'Copyright' ANY_COPYRIGHT_STYLE = '(%s|%s)' % (COPYRIGHT_WITH_C, COPYRIGHT_WITHOUT_C) YEAR = "20[0-9][0-9]" YEAR_RANGE = '(%s)(-%s)?' % (YEAR, YEAR) YEAR_LIST = '(%s)(, %s)+' % (YEAR, YEAR) ANY_YEAR_STYLE = '(%s|%s)' % (YEAR_RANGE, YEAR_LIST) ANY_COPYRIGHT_STYLE_OR_YEAR_STYLE = ("%s %s" % (ANY_COPYRIGHT_STYLE, ANY_YEAR_STYLE)) ANY_COPYRIGHT_COMPILED = re.compile(ANY_COPYRIGHT_STYLE_OR_YEAR_STYLE) def compile_copyright_regex(copyright_style, year_style, name): return re.compile(r'%s %s,? %s( +\*)?\n' % (copyright_style, year_style, name)) EXPECTED_HOLDER_NAMES = [ r"Satoshi Nakamoto", r"The Bitcoin Core developers", r"BitPay Inc\.", r"University of Illinois at Urbana-Champaign\.", r"Pieter Wuille", r"Wladimir J\. van der Laan", r"Jeff Garzik", r"Jan-Klaas Kollhof", r"ArtForz -- public domain half-a-node", r"Intel Corporation ?", r"The Zcash developers", r"Jeremy Rubin", ]
f.writelines()ではなく、f.write(”.join())で関数と引数にして書いてます。
################################################################################ # read and write to file ################################################################################ def read_file_lines(filename): with open(filename, 'r', encoding="utf8") as f: file_lines = f.readlines() return file_lines def write_file_lines(filename, file_lines): with open(filename, 'w', encoding="utf8") as f: f.write(''.join(file_lines))
なるほど、Pythonならギリまだいけるな..