首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python替换字符串时,将从文件中删除行。

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

Stack Overflow用户
提问于 2017-08-03 20:11:34
回答 1查看 58关注 0票数 0

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

唯一的区别是,每个配置包含一个“展位”和“窗口”号码在1行是不同的。

所以原始文件可能有一行

代码语言:javascript
复制
<file boothNumber="-1" window="-1" area="" section="">

备份文件可能有一行如下

代码语言:javascript
复制
<file boothNumber="325" window="3" area="" section="">

我的程序用备份文件中列出的数字替换原始文件中的-1。

我的程序扫描计算机或服务器名称的列表。这是start()函数。

它将获取一个名称并运行下一个函数,即booth()。

这将从备份配置中获取展位号,并将其保存到原始配置中。

然后,window()函数运行。

这将从备份配置中获取窗口号,并将其保存到原始配置中。

这个很好用。

问题

如果我的原始配置文件包含一个比备份配置文件更大的展台和窗口号,我就有问题了。一旦运行了最后一个窗口()函数,大约10-11行就会从原始配置文件的末尾切分。

因此,原始文件可能会开始如下

代码语言:javascript
复制
<file boothNumber="4444" window="4444" area="" section="">

备份文件可能包含

代码语言:javascript
复制
<file boothNumber="325" window="3" area="" section="">

第一个booth()函数将正确地编辑原始配置。当它到达第二个window()函数时,这个数字被正确地编辑为,但是其他行被从原始配置文件的末尾剪掉。

是什么导致了这一切?

如果我切换booth()和window()函数的顺序,那么它始终是导致问题的第二个函数。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-03 20:46:49

您应该同时取消以下两项内容:

代码语言:javascript
复制
window(servername) # when done, call 'window' function

代码语言:javascript
复制
workstationid(servername) # when done, call 'workstationID' function

一层。

在第二个函数中重新打开文件之前,您还没有关闭它。(即)您仍然在with子句中)。

您确实应该重构这些函数,因为它们或多或少是相同的(您的代码不是非常干的),但这与您的问题无关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45493729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档