需要正则表达式来修复构造2.8 nameless

2024-09-28 20:51:01 发布

您现在位置:Python中文网/ 问答频道 /正文

Construct 2.8字段变得没有名字,我需要一个或多或少可以自动翻译的脚本,类似于2to3 python脚本。为了充分披露,我是维护者。这不仅仅是为了我,也是为了整个社区。你知道吗

需要翻译的内容:

ULInt32 -> Int32ub  (actually its from {U,S}{B,L}Int{8,16,24,32,64})
field("name") -> "name" / field
Struct("name", ..., ...) -> "name" / Struct(..., ...)

(still adding...)

我以前使用的regex工具:

#!/usr/bin/python3
import re, os, sys

def processfolder(top): 
    for root, dirs, files in os.walk(top):
        for f in files:
            if f.endswith('.py'):
                processfile(os.path.join(root, f))
        for d in dirs:
            processfolder(os.path.join(root, d))

def processfile(fname):
    print(fname+'... ', end='')
    with open(fname, 'rt') as f:
        txt = f.read()
    txt = re.sub(r'???', lambda s: s.expand(r'\1'), txt)
    with open(fname, 'wt') as f:
        f.write(txt)
    print('done')


processfolder(sys.argv[1])

Tags: nameinretxt脚本fieldforos