替换文件中的行数据
Replace row data in file
我有两个文件:file1
、file2
。
在 file1
中,我有一些数据行,我正在将这些数据解析为 list1
并跳过空行并将元素设为小写:
文件 1:
dATa02
datA03
dAta04
with open('file1', 'r') as f:
list1 = [l.lower() for l in (line.strip() for line in f) if l]
结果得到一个数据列表list1
:[ 'data02', 'data03', 'data04' ]
在 file2
我有一行:if [data] in [ "data01", "data02", "data03" ] {
不断以 if [data] in
开头
文件 2:
#somedata
if [data] in [ "data01", "data02", "data03" ] {
#somedate
我正在使用正则表达式来解析数据列表:
import re
with open('/file2', 'r+') as f:
for l in f:
l_s = row.strip()
if 'if [data] in ' in row_s:
data1 = re.findall('"(.\w+)\"*', l_s)
print(data1)
结果我得到另一个数据列表list2
:[ 'data01', 'data02', 'data03' ]
得到两个列表后,我进行比较:
added = set(list1) - set(list2) #data04
deleted = set(list2) - set(list1) #data01
问题是:如何将list2
从file2
替换成list1
从file1
?
也许你可以根据file1 生成file2 中的列表?
文件 2 如下所示:
#somedata
with open('file1', 'r') as f:
list1 = [l.lower() for l in (line.strip() for line in f) if l]
if [data] in list1 {
#somedate
通过以下代码解决:
if list1 == list2:
print("Nothing changed...")
else:
print("Found changes:")
added_set = set(list1) - set(list2)
deleted_set = set(list2) - set(list1)
if added_set:
print(f"New env: {added_set}")
if deleted_set:
print(f"Old env: {deleted_set}")
env_new_str = (str(env_new).replace("'", '"'))
env_prod_str = (str(env_prod).replace("'", '"'))
try:
s = open("file2").read()
s = s.replace(env_prod_str, env_new_str)
f = open("file2", 'w')
f.write(s)
print("Changed...")
finally:
f.close()
我有两个文件:file1
、file2
。
在 file1
中,我有一些数据行,我正在将这些数据解析为 list1
并跳过空行并将元素设为小写:
文件 1:
dATa02
datA03
dAta04
with open('file1', 'r') as f:
list1 = [l.lower() for l in (line.strip() for line in f) if l]
结果得到一个数据列表list1
:[ 'data02', 'data03', 'data04' ]
在 file2
我有一行:if [data] in [ "data01", "data02", "data03" ] {
不断以 if [data] in
文件 2:
#somedata
if [data] in [ "data01", "data02", "data03" ] {
#somedate
我正在使用正则表达式来解析数据列表:
import re
with open('/file2', 'r+') as f:
for l in f:
l_s = row.strip()
if 'if [data] in ' in row_s:
data1 = re.findall('"(.\w+)\"*', l_s)
print(data1)
结果我得到另一个数据列表list2
:[ 'data01', 'data02', 'data03' ]
得到两个列表后,我进行比较:
added = set(list1) - set(list2) #data04
deleted = set(list2) - set(list1) #data01
问题是:如何将list2
从file2
替换成list1
从file1
?
也许你可以根据file1 生成file2 中的列表?
文件 2 如下所示:
#somedata
with open('file1', 'r') as f:
list1 = [l.lower() for l in (line.strip() for line in f) if l]
if [data] in list1 {
#somedate
通过以下代码解决:
if list1 == list2:
print("Nothing changed...")
else:
print("Found changes:")
added_set = set(list1) - set(list2)
deleted_set = set(list2) - set(list1)
if added_set:
print(f"New env: {added_set}")
if deleted_set:
print(f"Old env: {deleted_set}")
env_new_str = (str(env_new).replace("'", '"'))
env_prod_str = (str(env_prod).replace("'", '"'))
try:
s = open("file2").read()
s = s.replace(env_prod_str, env_new_str)
f = open("file2", 'w')
f.write(s)
print("Changed...")
finally:
f.close()