次のような構造の.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を使うことができます: tutorialspointのreadline()または これは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)