我发现了一行代码,如果字符串出现在这个答案的文本中,它将搜索并替换该字符串:
Search for a line that contains some text, replace complete line python
outFile.writelines("process.control.timeout=900\n"
if "process.control.timeout" in line else line
for line in process)
我修改了它,连续使用了三次,就像这样:
def runSearch(self):
outFile.writelines("aFile=" + aFilename + "\n" if "aFile=" in line else line for line in searchFile)
outFile.writelines("bFile=" + bFilename + "\n" if "bFile=" in line else line for line in searchFile)
outFile.writelines("cFile=" + cFilename + "\n" if "cFile=" in line else line for line in searchFile)
问题是,只有第一行行行得通。为什么会这样?我该怎么解决?你知道吗
我猜
searchFile
是一个文件(通过调用open
创建的),而不是一个列表。你知道吗文件对象有一个指向其当前位置的内部指针。当您从文件中
read
某个内容时,内部指针会被更新—因此将来对read
的调用将不会返回相同的结果。你知道吗重复文件中的行,就像您在这里所做的(
line for line in searchFile
)是更改文件中当前位置的另一个操作示例。你可以把迭代一个文件看作是在幕后多次调用read
。你知道吗因此,一旦遍历了文件中的所有行,就到达了末尾,文件中随后的} 进行迭代之后获取文件的当前位置来测试这一点:
read
将不会返回任何内容。您可以通过在使用^{有两种方法可以解决这个问题。一个选项是在阅读后将reset the file's position设置为0。你知道吗
另一种选择是读取一次文件并将内容存储在列表中。你知道吗
如果文件太大,无法完全读入内存,则应选择第一个选项;如果希望能够快速关闭输入文件,则应选择第二个选项。你知道吗
相关问题 更多 >
编程相关推荐