使用Python在文件中插入文本

2024-04-29 08:06:25 发布

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

我有几个java代码文件,我必须在每个文件中添加一个公共类级别的变量。有太多的文件,我需要编写一个python2.2脚本来完成同样的工作。在

package xx.xx.xx;

import java.util.Properties;

public class MyClass extends YourClass{

    public myMethod() throws MyException {

    }
}

预期产量

^{pr2}$

我知道文件.查找({')给我第一次出现{的索引,但我需要将其余代码向下推并在每个文件中插入我的公共成员。在


Tags: 文件代码import脚本packageutilmyclassproperties
2条回答

Python为此提供了一个方便的工具:fileinput模块:

import fileinput
import sys
import re

newline = '''\
{l}
    public static final String CO_ID = "XXXXX"
'''

filename = '/path/to/file.java'
for line in fileinput.input([filename], inplace=True, backup='.bak'):
    if re.match(r'public class', line):
        sys.stdout.write(newline.format(l=line))
    else:
        sys.stdout.write(line)

  • inplace=True,更改文件“就地”。实际上是一个临时文件 创建,然后移动到原始位置。在
  • backup='.bak'告诉fileinput.input创建 原始文件。在
  • ^由于print添加了一个 额外的新行,而sys.stdout.write没有。在

Ubuntu的代码可以工作,但是我已经为python2.2做了修改 Python2.2兼容代码

import fileinput
import sys
import re

newline = '''\
%s
    public static final String CO_ID = "XXXXX"
'''

filename = '/path/to/file.java'
for line in fileinput.input([filename], inplace=True, backup='.bak'):
    if re.match(r'public class', line):
        sys.stdout.write(newline%line)
    else:
        sys.stdout.write(line)

相关问题 更多 >