我有一个备份配置文件和一个原始配置文件。 这些文件包含大量相同的信息行。
唯一的区别是每个配置包含一个" booth"和"窗口" 1行不同的数字。
因此原始文件可能有一行像
<file boothNumber="-1" window="-1" area="" section="">
备份文件可能有一行
<file boothNumber="325" window="3" area="" section="">
我的程序用原始文件中的-1替换备份文件中列出的数字。
我的程序会扫描计算机或服务器名称列表。 这是start()函数。
它将获取一个名称并运行下一个功能,即booth()。
这会从备份配置中获取booth号并将其保存到原始配置中。
然后window()函数运行。
这会从备份配置中获取窗口编号并将其保存到原始配置中。
这很好用。
问题
如果我的原始配置文件包含的摊位和窗口号大于备份配置文件,则会出现问题。运行完最后一个window()函数后,将从原始配置文件的末尾删除大约10-11行。
因此原始文件可能会像
一样开始<file boothNumber="4444" window="4444" area="" section="">
备份文件可能包含
<file boothNumber="325" window="3" area="" section="">
第一个booth()函数将正确编辑原始配置。 当它到达第二个window()函数时,数字被正确编辑但其他行在原始配置文件的末尾被删除。
可能导致这种情况的原因是什么?
如果我切换booth()和window()函数的顺序,它总是导致问题的第二个函数。
这是我的代码(它目前从下到上运行):
答案 0 :(得分:1)
你应该取消:
window(servername) # when done, call 'window' function
和
workstationid(servername) # when done, call 'workstationID' function
一个级别。
在第二个函数中重新打开文件之前,您尚未关闭该文件。
(即你仍然在with
条款中。)
你真的应该重构这些功能,因为它们或多或少相同(你的代码不是很DRY),但这与你的问题无关。