使用python从文本文件中删除行

使用python从文本文件中删除行,python,python-2.7,file-io,Python,Python 2.7,File Io,假设我有一个文本文件,里面有很多随机的行。如何使用Python保留特定行并从该文件中删除其他行? 脚本应搜索目录/和子目录中的所有.txt文件。首先,要搜索所有.txt文件,可以使用以下方法: import glob, os os.chdir("/mydir") for filePath in glob.glob("*.txt"): ... 来源于 其次,要查看文件并找到所需的行,请使用: myfile = open(filePath, "r") 并查看文件中是否有所需的行 if

假设我有一个文本文件,里面有很多随机的行。如何使用Python保留特定行并从该文件中删除其他行?
脚本应搜索目录/和子目录中的所有.txt文件。

首先,要搜索所有
.txt
文件,可以使用以下方法:

import glob, os
os.chdir("/mydir")
for filePath in glob.glob("*.txt"):
    ...
来源于

其次,要查看文件并找到所需的行,请使用:

 myfile = open(filePath, "r")
并查看文件中是否有所需的行

if desiredLine in myfile:
    ...
然后可以关闭该文件并以写入模式重新打开它

myfile.close()
myfile = open(filePath, "w")
然后你所要做的就是写下你想要保留的那行

myfile.write(desiredLine)
然后再次关闭该文件

myfile.close()
来源于

最后的脚本是这样结束的:

import glob, os
os.chdir("/mydir")
for filePath in glob.glob("*.txt"):
    myfile = open(filePath, "r")
    if desiredLine in myfile:
        myfile.close()
        myfile = open(filePath, "w")
        myfile.write(desiredLine)
    myfile.close()
注意,如果您要检查的文件中没有您的行,它将保持原样


希望这对您有所帮助

不太好,但如果需要,请关闭
文件中的行:
将在找到行后立即短路,而不必将整个文件读入内存(并且只需要与最长行成比例的峰值内存,而不是与文件大小成比例的峰值内存,如果文件可能很大,这是一个好主意)。此外,您可以在
r+
模式下只打开文件一次,如果找到行,
seek
到开头,
写入
行,然后
截断
文件,这样可以避免打开/关闭文件两次。最后,
file.open(filePath,“w”)
是不合法的;您可能是指
file=open(filePath,“w”)
以open(filePath,“w”)作为文件:
。谢谢您的语法提示,编辑:)我不明白您首先说的是什么。语句是
if desiredLine in file.readlines():
而不是
if desiredLine in file:
我是说
if desiredLine in file:
将更有效地实现与
if desiredLine in file.readlines()相同的目标<代码>如果需要文件中的行:
将延迟使用文件中的行,直到找到匹配项(并立即返回
True
)或耗尽文件(并返回
False
)。Ohhh我明白了。好的,我也会编辑