python - 如何通过Python运行unix命令来就地编辑文件

标签 python file unix subprocess in-place

我必须打开一个 xml 文件,修剪其中的空格(换行符除外),删除与正则表达式匹配的所有行,然后删除与另一个正则表达式匹配的所有行。现在这使用了 3 个独立的临时文件,我知道这是不必要的。

# Trim whitespace from xml
f2 = open(fname + '.xml','r')
f3 = open(fname + 'temp.xml', 'w')
subprocess.call(["tr", "-d", "'\t\r\f'"], stdin=f2, stdout=f3)
f2.flush()
f3.flush()

# Remove the page numbers from the file                         
f4 = open(fname + 'temp2.xml', 'w')
subprocess.call(["sed",
"/<attr key=\"phc.line_number\"><integer>[0-9]*<\/integer><\/attr>/d",
                                    fname + 'temp.xml'], stdout=f4)
f4.flush()

# Remove references to filename from the file
--not implemented--

有没有一种方法可以让我用一个文件完成所有这些工作?

最佳答案

$ sed -i -e 's/[ \r\t\f]//g' -e /pattern1/d -e /pattern2/d x.xml

注意多个 -e 参数。 -i 将结果保留在 x.xml 中。

关于python - 如何通过Python运行unix命令来就地编辑文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321193/

相关文章:

file - 一次更改多个文件中的html代码

linux - shell 脚本中的定时陷阱

python - 如何在 Python 中运行上下文感知命令?

python - Tkinter 拖放

file - Groovy 解析文本文件

java - Android:检查文件是否存在,如果不存在则创建新文件

bash - 编号数组元素 - Bash 脚本

javascript - 如何通过python检索javascript var的值?

python - 如何提取数据帧列中所有数字的前 2 位数字?

python - Python 中推荐的缩进大小是多少?