0

我有一个 .txt 文件,其结构如下:

name
parameter 1
parameter 2
parameter 3
\n
name2
p1
p2
p3
\n
(...)

我不知道如何创建一个从文件中删除块(名称、参数和\ n)的函数,该文件将名称作为函数参数。

4

3 回答 3

0

没有从文件中删除这样的事情。您只能读取和写入文件。但是您可以在 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"。它假定块用空行分隔。

于 2013-02-25T10:51:59.863 回答
0

也许你可以使用 readline: readline() from tutorialspoint或者 这个来自关于 readline 的 python 文档

  1. 从源文件中读取每一行。
  2. 如果该行包含函数参数(名称或任何内容),则继续,(不要阅读此行,跳到下一行)。
  3. 然后附加每个过滤的行以创建新文件。
于 2013-02-25T10:53:02.050 回答
0
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)              
于 2013-02-25T11:22:41.950 回答