シリーズ記事ディレクトリ
Xiaobaiのプログラミング独習記12(Pythonクローラー入門4 Selenium使用例2)
プログラミングXiaobaiの自習記イレブン(Pythonクローラー入門3 Seleniumの使い方+サンプル詳細解説)
プログラミングXiaobaiの独習ノート10(PythonクローラーII入門+サンプルコードの詳細解説)
プログラミングXiaobiの独学メモ9(Pythonクローラー入門+詳細コード解説)
目次
2. open メソッドを使用してファイルの読み取りと書き込みを行う
序文
学習の基礎となる文書の読み書きについては自習ノート1で学習済みですが、これからOAの学習を始めており、さらに深く勉強しなければなりません。
1.Pythonオフィスオートメーションとは
Pythonオフィスオートメーションとは、Excel、PPT、Word、メール、ファイル処理、データ分析処理、クローラなどのデータソースなどのプログラムを記述し、自動的に追加、削除、変更、確認などの操作を行い、オフィスプロセスで発生する問題を解決することを指します。それにより効率が向上します。
2. open メソッドを使用してファイルの読み取りと書き込みを行う
open( ' filename ' , ' w ' ) を f として使用します:
w は write (書き込み) を意味しており、ファイルが存在しない場合は新しいファイルを作成して書き込みますが、既にファイルが存在する場合は新しい内容で元の内容が上書きされます。
また、w+ パラメータもあります。これは、読み取りと書き込みが可能であり、w は書き込みのみ可能で読み取りはできないことを意味します。
open( ' filename ' , ' r ' ,encoding= ' UTF8 ' ) as f:
これも分かりやすく、rはread(読み込み)という意味で、ファイルが存在しない場合はエラーが報告されます。
ここにもパラメータ a があり、add を意味するはずですが、これも書かれていますが、元の内容は上書きされず、元の内容の後に追加されます。
3.コンテンツを読む
上記のコードに従ってファイルを開いた後、read() メソッドを呼び出してファイルを読み取る必要があります。
1. f.read() メソッド
f.read() メソッドはファイル全体を読み取り、結果を文字列として返します。パラメータを追加できます。たとえば、f, read(10) は最初の 10 文字を返すことを意味します。
2. f.readline() メソッド
f.readline() メソッドは、文字列の行を読み取り、文字列の形式で返します。ここにパラメータを追加することもできます。たとえば、 f.readline(10) は、新しい行の最初の 10 文字を返すことを意味します。
f.readline() は 1 行のデータを読み取るために 1 回呼び出されます。では、次のデータ行を読み取るにはどうすればよいでしょうか?
`readline()` を使用してファイルからデータの 2 行目を読み取るには、次のコード例を使用できます。
with open('file.txt', 'r') as f:
first_line = f.readline() # 读取第一行数据并忽略
second_line = f.readline() # 读取第二行数据
print(second_line)
この例では、「file.txt」というテキスト ファイルを開き、読み取り専用モード (「r」) で操作します。次に、`readline()` 関数を使用して 2 回読み取ります。
`readline()` への最初の呼び出しは、データの最初の行を読み取るために使用されますが、それを変数 `first_line` に代入し、データの 2 行目のみを考慮するため無視します。
`readline()` への 2 回目の呼び出しは、データの 2 行目を読み取り、それを変数 `second_line` に割り当てるために使用されます。その後、必要に応じてさらに処理することができます。
最後に、`second_line` を出力して 2 行目のデータをコンソールに出力します。
したがって、最初の行のデータが必要なので、それを数回実行する必要があり、非常に不便です。
3. readlines() メソッド
readlines() メソッドはファイル全体を読み取り、それをリストとして返します。このようにして、リスト操作を読み取ることで必要なデータを取得できます。
readlines() メソッドにもパラメータがありますが、多くの人がそれを誤解しています。たとえば、Baidu 検索で見つかった結果は次のとおりです。
f.readlines( 50 ) はファイル操作の関数呼び出しであり、その機能はファイルの内容を読み取り、各行の内容で構成されるリストを返すことです。
このうちパラメータ50 はファイルを読み込む行数を示し、具体的な意味はファイルの内容や構造によって異なります。ファイルに50行を超える行が含まれている場合、読み取られる行数は50行に制限されず、ファイルの内容全体が読み取られます。ファイルの行数が50 行未満の場合は、ファイル内のすべての行が読み取られます。
f.readlines() 関数は通常、バイナリ ファイル (画像、オーディオ、ビデオなど) ではなく、テキスト ファイル (テキスト形式で保存されたファイル) を読み取るために使用されることに注意してください。
f.readlines(68) を使用してファイルの内容をリストに読み取る方法を示す例を次に示します。
with open('file.txt', 'r') as f:
lines = f.readlines(50)
for line in lines:
print(line)
この例では、ファイル「file.txt」が読み取り専用モード (「r」) で開かれ、操作されます。次に、 f.readlines( 50 ) は、ファイルの内容を各行を要素としてリスト行に読み取ります。次に、リストを走査することにより、ファイルの内容を 1 行ずつ出力または処理できます。
行数パラメータを指定しない場合、つまり f.readlines() を記述する場合、関数はデフォルトでファイル全体の内容を読み取り、リストを返すことに注意してください。
上記はインターネットで得られた回答です。ご覧のとおり、記事内の説明ではパラメータが読み取りの機能を示していると説明されていますが、実際にはそうではありません。次のコードを試してみましょう。
import os
with open('test.txt','w') as f:
for i in range(79):
f.write(f'{i}'* 68)
f.write('\n')
with open('test.txt','r',encoding='UTF8') as f:
for line in f.readlines(79):
print(line)
79 行のコードを出力するはずですが、結果はそうではなく、出力結果は次のようになります。
コードが 2 行しかないことがわかります。実際、パラメータの意味は依然として文字数ですが、1 行あたり最大 79 文字を返すのではなく、合計文字数が 79 文字以上の最小の行を返すことを意味します。コードでは、最初の行は 68 文字で、79 未満です。次に、別の行、68+68=136 を返します。79 より大きい場合は、次の行は返されないため、2 行のみが返されます。
要約する
Python でファイルを読み書きするための一般的な方法は次のとおりです。
1. open() 関数を使用してファイルを開き、開くモード (読み取りの場合は「r」、書き込みの場合は「w」、追加の場合は「a」など)を指定します。
2. read() または readlines ( ) 関数を使用して、ファイルの内容を読み取ります。
3. write() または writelines() 関数を使用して、コンテンツをファイルに書き込みます。
4. close() 関数を使用してファイルを閉じます。
5.ファイルを閉じ忘れることによるリソースの無駄を避けるために、with ステートメントを使用してファイルを自動的に閉じます。
6.ファイルを読み書きするとき、特に中国語などの非 ASCII 文字を扱うときは、エンコードの問題に注意する必要があります。codecs モジュールを使用すると、エンコードの問題を解決できます。
7.バイナリ ファイルの読み取りおよび書き込みを行う場合は、バイナリ モード (「rb」および「wb」) を使用してファイルを開く必要があります。
8.大きなファイルの読み取りおよび書き込みを行う場合、バッファを使用して効率を向上させることができます。
9.ファイルを読み書きするときは、ファイル パスの問題、特にオペレーティング システムが異なるとパスの表現が異なることに注意する必要があります。os モジュールを使用してファイル パスを処理できます。