当我使用Python替换字符串时,行将从文件中删除

时间:2017-08-03 20:11:35

标签: python

我有一个备份配置文件和一个原始配置文件。 这些文件包含大量相同的信息行。

唯一的区别是每个配置包含一个" 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()函数的顺序,它总是导致问题的第二个函数。

这是我的代码(它目前从下到上运行):

1 个答案:

答案 0 :(得分:1)

你应该取消:

window(servername) # when done, call 'window' function

workstationid(servername) # when done, call 'workstationID' function

一个级别。

在第二个函数中重新打开文件之前,您尚未关闭该文件。 (即你仍然在with条款中。)

你真的应该重构这些功能,因为它们或多或少相同(你的代码不是很DRY),但这与你的问题无关。