我有一个 .txt 文件,其结构如下:
name
parameter 1
parameter 2
parameter 3
\n
name2
p1
p2
p3
\n
(...)
我不知道如何创建一个从文件中删除块(名称、参数和\ n)的函数,该文件将名称作为函数参数。
我有一个 .txt 文件,其结构如下:
name
parameter 1
parameter 2
parameter 3
\n
name2
p1
p2
p3
\n
(...)
我不知道如何创建一个从文件中删除块(名称、参数和\ n)的函数,该文件将名称作为函数参数。
没有从文件中删除这样的事情。您只能读取和写入文件。但是您可以在 Python 中从列表中删除项目,或者在迭代中省略它们:
In [1]: def exclude(f, name):
...: with open(f) as fo:
...: found = False
...: for line in fo:
...: if line.strip() == name:
...: found = True
...: continue
...: if found and not line.strip():
...: found = False
...: if not found:
...: yield line
...:
In [2]: with open('/tmp/new.txt', 'w') as new:
...: new.writelines(exclude('/tmp/text.txt', 'name'))
...:
此示例写入一个没有以 . 开头的块的新文件"name"
。它假定块用空行分隔。
也许你可以使用 readline: readline() from tutorialspoint或者 这个来自关于 readline 的 python 文档
def rmblock(path, block):
lines = open(path).readlines()
blockstart = lines.index(block + "\n")
blockend = lines.index(r"\n" + "\n", blockstart)
del(lines[blockstart:blockend+1])
open(path, 'w+').writelines(lines)