Python从文本文件中删除一行就是删除一切



我试图删除一行匹配的变量。但是,它正在清除文件。

a_file = open("./Variables/TxtFile.txt", "r")
lines = a_file.readlines()
a_file.close()
new_file = open("./Variables/TxtFile.txt", "w")
for line in lines:
if line.strip("n") == VariableStore:
new_file.write(line)
new_file.close()

目标是删除与VariableStore匹配的行,而不是删除整个文本文件

关于我对你原始帖子的评论。只有在匹配要删除的行时才写入文件,然后关闭文件。

这似乎不是你想要的。

您可能希望更改if条件,以便在与您想要删除的行不匹配的情况下执行,即if not line.strip("n") == VariableStore:,并在循环后关闭文件,即在与for循环相同的级别上。

试试下面这些建议:


a_file = open("./Variables/TxtFile.txt", "r")
lines = a_file.readlines()
a_file.close()
new_file = open("./Variables/TxtFile.txt", "w")
for line in lines:
if not line.strip("n") == VariableStore:
new_file.write(line)
new_file.close()

如果你的目的是过滤线匹配VariableStore,这么做:

with open("./Variables/TxtFile.txt", "r") as a_file:
lines = a_file.readlines()
with open("./Variables/TxtFile.txt", "w") as new_file:
for line in lines:
if line.strip("n") != VariableStore:
continue  # Skip the VariableStore line
new_file.write(line)  # Write other lines

使用with语句时,不需要手动关闭文件。

您只需要在稍后解析完所有行后关闭该文件。此外,您需要编写的行。火柴,不是那种火柴。请注意以下更改:

# Read file
a_file = open("./Variables/TxtFile.txt", "r")
lines = a_file.readlines()
a_file.close()
# Write file
new_file = open("./Variables/TxtFile.txt", "w")
for line in lines:
if line.strip("n") == VariableStore:
# Don't write this line
pass
else:
new_file.write(line)
new_file.close()

让我们假设您的文本文件TxtFile.txt包含以下文本

Hello
World
I'm
Python
Developer

你有一个变量var,它包含字符串World,我们想从文本文件中删除。

这是一个python代码完成的工作,在几行

var='World' # a string to remove
with open("TxtFile.txt","r+") as f:
lines = f.readlines()
lines = [line for line in lines if line.strip()!=var]
f.seek(0)
f.writelines(lines)
f.truncate()

运行此代码后的文本文件。

Hello
I'm
Python
Developer

问题是您以写模式而不是追加模式打开文件。替换

new_file = open("./Variables/TxtFile.txt", "w")

new_file = open("./Variables/TxtFile.txt", "a")

,您将追加数据而不是覆盖它。

另外,通常建议使用'with'语句打开文件,因为它会自动为您关闭文件。

with open("./Variables/TxtFile.txt", "a") as text_file:
...

最新更新