处理终端上的Diffstat输出



下面是我在终端上执行diffstat时的输出。把数字133和85分成两列放到CSV文件中,最好的方法是什么?谢谢。

README.md  |   88 +++++++++++++++++++++--------------------
home.html  |only
index.html |  130 ++++++++++++++++++++++++++++++++++++++++---------------------
libraries  |only
4 files changed, 133 insertions(+), 85 deletions(-)

假设您将diff写入文件diff.txt:

README.md  |   88 +++++++++++++++++++++--------------------
home.html  |only
index.html |  130 ++++++++++++++++++++++++++++++++++++++++---------------------
libraries  |only
4 files changed, 133 insertions(+), 85 deletions(-)

并有一个.csv文件与这些头:

insertions,deletions

那么这个可以工作:

import re, csv
s = None
with open("diff.txt", mode="r") as diff_file:
s = diff_file.readlines().pop()
regex = r"(?P<insertions>d*) insertions(+), (?P<deletions>d*) deletions.*"
pattern = re.compile(regex)
match = pattern.search(s)
with open("diffs.csv", mode="a", newline="") as diffs_csv:
fieldnames = ['insertions', 'deletions']
writer = csv.DictWriter(diffs_csv, fieldnames=fieldnames)
writer.writerow(match.groupdict())

在我的机器上:

➜  diffstat ls
diffs.csv  diff.txt  main.py
➜  diffstat cat diffs.csv
insertions,deletions
➜  diffstat cat diff.txt
README.md  |   88 +++++++++++++++++++++--------------------
home.html  |only
index.html |  130 ++++++++++++++++++++++++++++++++++++++++---------------------
libraries  |only
4 files changed, 133 insertions(+), 85 deletions(-)
➜  diffstat python main.py
➜  diffstat cat diffs.csv
insertions,deletions
133,85

您可以创建diff.txt文件并像这样运行脚本:

git diff --stat > diff.txt & python main.py

最新更新