所以我遇到了问题。我必须浏览一个充满参数的文件(大约40.000)并更改少量特定参数。
我已经找到了一种有效的方法,我正在扫描文件中是否有与我想要更改的值对应的唯一行,并将该行的位置放在列表中。我想要改变的线总是与那些独特线相同的距离。
如果我只改变线条(虽然可能不优雅或快速),这很有效,但下一步会在文件中加入更多行(我可以输入一个常量值或列表有一堆不同的价值观。)
我的解决方案是我开始将这些列表从文件的末尾放到开头(因为我不会丢失任何相对位置,我仍然需要更改)或者为每个位置添加偏移量我添加一个与列表长度相对应的列表。
那么,还有更优雅/高效的解决方案吗?
免责声明:我可能是python的新手,习惯于c / c ++,所以我可能想得太多c / c ++
编辑:
我用来找到我需要的行的代码:
values = [1, 2, 3, 4]
ref_lines = []
lines = []
offset = 4
input_data = open("Input.txt", "r")
data = input_data.readlines()
input_data.close()
pos = 1
while pos < len(value_flow_left_p1) + 1:
counter = 1
num = "Unique_Reference{}\n".format(pos)
for line in data:
if num == line:
break
counter +=1
ref_lines.append(counter - 1)
pos += 1
for lines in ref_lines:
counter = lines + 1
num = "Start_of_Data_after_Reference\n"
while counter < len(data) - 1:
if data[counter] == num:
lines.append(counter + offset)
break
counter += 1
(我知道,从技术上来说,我可以像搜索&#34; Start_of_Data_after_Reference&#34;一样搜索相关的行,但是&#34; Start_of_Data_after_Reference&#34;只能有两个不同的名字,而数据我想改变有十几个不同的名字)
编辑2: 当前: 输入:
Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Value I want to change
Dummy 6
输出:
Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Changed Value
Dummy 6
新:
输入:
Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Array I want to change:
1
2
Dummy 6
输出:
Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
New Array:
new Number 1
new Number 2
new Number 3
new Number 4
Dummy 6
在这个40.000行文件中约有30次这样的事情。