[解決済み] 開いているファイルに対して、read()を2回呼び出せないのはなぜですか?
2022-09-26 18:35:42
質問
今やっている演習で、与えられたファイルの内容を
read()
メソッドを使用して、指定されたファイルの内容を 2 回読み取ろうとしています。不思議なことに、2回目に呼び出したとき、ファイルの内容を文字列として返さないようなのですが?
以下はそのコードです。
f = f.open()
# get the year
match = re.search(r'Popularity in (\d+)', f.read())
if match:
print match.group(1)
# get all the names
matches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read())
if matches:
# matches is always None
もちろん、これが最も効率的で最良の方法でないことは分かっていますが、ここではそれが重要ではありません。重要なのは、なぜ私は
read()
を 2 回呼び出すことができないのか、ということです。ファイルハンドルをリセットしなければならないのでしょうか?または、それを行うためにファイルを閉じたり開いたりする必要がありますか?
どのように解決するのですか?
呼び出し
read()
を呼び出すと、ファイル全体を読み込んで、 読み込みカーソルをファイルの最後に残します (これ以上読み込むものがない状態です)。もし、一度に特定の行数だけ読み込みたい場合は
readline()
,
readlines()
である行を反復して表示したり
for line in handle:
.
質問に直接答えるなら、ファイルが読み込まれた後に
read()
を使用することができます。
seek(0)
を使うと、読み込みカーソルをファイルの先頭に戻すことができます (docs は
ここで
). ファイルがあまり大きくならないことが分かっている場合は、ファイル中の
read()
の出力を変数に保存し、それを
findall
の式で使うことができます。
Ps. 使い終わったら、ファイルを閉じるのを忘れないでください。
関連
-
[解決済み】改行がないファイルを読み込むには?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] Python の open() はファイルが存在しない場合、ファイルを作成しない
-
[解決済み] 他のファイルから関数を呼び出す?
-
[解決済み] Pythonの上達の道 - 見習いから第一人者へ
-
[解決済み] 大きなファイルを一行ずつ読むには?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複