从 python 中的文件中删除行
delete lines from file in python
我有一个这样格式的文件:
#1 0.13297254902 0.324803921569 0.434835294118 ...#many floats in one line
#2 0
#3 0.377305882353 0.595870588235 0.353215686275 ...
#4 1 #0/1 for the second line
#5 ....
我想处理文件,以便删除所有第二行为 0 的块,并将文件保留为
#1 0.377305882353 0.595870588235 0.353215686275 ...
#2 1
#3 0.403529411765 0.341654901961 0.379278431373 ...
#4 1 #now they are all 1s
#5 .....
我尝试了下面的代码片段,但它只能看到 0/1 然后删除该行,但我想删除浮点数高于 0/1 的行,而不是浮点数低于 0/1 的行。
f = open(filePath, "r")
lines = f.readlines()
f.close()
f = open(filePath, "w")
for line in lines:
if "1\n" in line:
f.write(line)
有没有其他方法可以选择包含哪一行而不包含哪一行?
或者也许有一种方法可以向后处理文件?
我们可以使用next()
函数来获取文件中的下一个可迭代元素。 shutil
模块允许我们移动新文件,覆盖原始文件(感谢@JoranBeasley)。
import shutil
with open(filePath, 'r') as f, open('new_' + filePath, 'w') as output:
for line in f:
n = next(f)
if n != '0\n':
output.write(line+n)
shutil.move("new_" + filePath, filePath)
输入:
0.13297254902 0.324803921569 0.434835294118 ...#many floats in one line
0
0.377305882353 0.595870588235 0.353215686275 ...
1 #0/1 for the second line
输出:
0.377305882353 0.595870588235 0.353215686275 ...
1 #0/1 for the second line
我有一个这样格式的文件:
#1 0.13297254902 0.324803921569 0.434835294118 ...#many floats in one line
#2 0
#3 0.377305882353 0.595870588235 0.353215686275 ...
#4 1 #0/1 for the second line
#5 ....
我想处理文件,以便删除所有第二行为 0 的块,并将文件保留为
#1 0.377305882353 0.595870588235 0.353215686275 ...
#2 1
#3 0.403529411765 0.341654901961 0.379278431373 ...
#4 1 #now they are all 1s
#5 .....
我尝试了下面的代码片段,但它只能看到 0/1 然后删除该行,但我想删除浮点数高于 0/1 的行,而不是浮点数低于 0/1 的行。
f = open(filePath, "r")
lines = f.readlines()
f.close()
f = open(filePath, "w")
for line in lines:
if "1\n" in line:
f.write(line)
有没有其他方法可以选择包含哪一行而不包含哪一行? 或者也许有一种方法可以向后处理文件?
我们可以使用next()
函数来获取文件中的下一个可迭代元素。 shutil
模块允许我们移动新文件,覆盖原始文件(感谢@JoranBeasley)。
import shutil
with open(filePath, 'r') as f, open('new_' + filePath, 'w') as output:
for line in f:
n = next(f)
if n != '0\n':
output.write(line+n)
shutil.move("new_" + filePath, filePath)
输入:
0.13297254902 0.324803921569 0.434835294118 ...#many floats in one line
0
0.377305882353 0.595870588235 0.353215686275 ...
1 #0/1 for the second line
输出:
0.377305882353 0.595870588235 0.353215686275 ...
1 #0/1 for the second line