前回の記事「手をつないでPythonを学ぶ」30-モジュールでは、モジュールをインポートして他のファイルの関数を呼び出す方法を学びました。これは、クロスプログラムまたはクロスファイル操作を実装するのは初めてです。
次に、ファイルを開く、ファイルを読み取る、ファイルを閉じる、ファイルを書き込む、ファイルを保存するなど、Pythonを介して他のファイルを操作する方法をさらに学習します。Pythonはファイルの処理が非常に簡単であるため、Pythonはテキストおよびファイル処理の分野で非常に人気があります。
今日と次のいくつかの記事の説明とデモンストレーションを容易にするために、次のいくつかの記事を実行するサンプルファイルとして自分でテキストファイルを作成する必要があります。テキストファイルの内容は自由に作成できます。一連の記事「LearningPythonwith You」のタイトルの一部を内容として使用して、次の内容のテキストファイルcontents.txtを作成します。
「手をつないでPythonを学ぶ」1-なぜPythonを学ぶのか?
「手をつないでPythonを学ぶ」2-Pythonのインストール
「手をつないでPythonを学ぶ」3-PyCharmのインストールと構成
「手をつないでPythonを学ぶ」4-HelloWorld!
「手をつないでPythonを学ぶ」5-JupyterNotebook
「手をつないでPythonを学ぶ」6文字の識別
「手をつないでPythonを学ぶ」7-文字列のインデックス
「手をつないでPythonを学ぶ」8弦スライシング
「手をつないでPythonを学ぶ」9弦操作
「手をつないでPythonを学ぶ」10文字列関数
このドキュメントとこの記事のサンプルプログラムは、「Yishuo Python」の公式アカウントをフォローし、「Hand31」に返信することでダウンロードできます。
以下では、Python処理ファイルの基本的な操作を紹介します。
1.ファイルパス
ファイルを読み取るには、最初にファイルの場所を知る必要があります。
a、同じフォルダ
Pythonは、デフォルトで現在のプログラムが配置されているフォルダーを検索します。プログラムファイルとターゲットファイルが同じフォルダーにある場合は、ターゲットファイルのパスをPythonに通知する必要はなく、ファイル名の内容を使用するだけです。 .txtを直接、Pythonはそれを読み取ることができます。
b、下位フォルダー
ターゲットファイルがプログラムファイルが置かれているフォルダの下位レベル(下位レベルまたは複数のレベルを含む)にある場合は、「相対パス」を使用できます。
たとえば、プログラムファイルが配置されているフォルダーはpythonであり、ターゲットファイルはpythonフォルダーのlessonフォルダーのtextフォルダーにあります。現時点では、ターゲットファイルの相対パスは「lesson / text /contents.txt」です。このとき、Pythonターゲットファイルにファイル名を伝えるだけでなく、プログラムファイルに対するPythonターゲットファイルの場所も伝えます。
ここで、Windowsシステムのファイルパスはバックスラッシュ「\」を使用してさまざまなレベルのフォルダを区別しますが、Pythonプログラムでは、スラッシュ「/」を使用して示すことができることに注意してください。バックスラッシュを使用してそれを示す場合は、バックスラッシュ「\」を直接使用しないように注意する必要があります。Pythonのバックスラッシュはエスケープを意味するためです。
ファイルパスにtまたはnで始まるフォルダー(C:\ python \ new \ text.txtなど)がある場合、バックスラッシュと組み合わせると、\ nおよび\ tはPythonによって戻り行またはタブとして解釈されます。の。したがって、バックスラッシュを使用してファイルアドレスを表示する場合は、パス内の各バックスラッシュをバックスラッシュを使用してエスケープし、誤ってエスケープしないようにすることをお勧めします(C:\\ python \\ new \\ text.txtなど)。
c、その他のフォルダ
ターゲットファイルがプログラムファイルの上位レベルまたは別のフォルダにある場合は、「絶対パス」を使用する必要があります。絶対パスは、ファイルストレージの完全なアドレスと正確な場所であり、アドレスバーのアドレスと同じです。
このとき、ターゲットファイルのパスが「D:\ study \ python \ contents.txt」であることをPythonに伝えます。
覚えておくべきことの1つは、相対パスの代わりに絶対パスを使用できることですが、絶対パスの代わりに相対パスを使用することはできません。
2.ファイルを開きます
ファイルの場所がわかれば、Pythonの組み込み関数open()を使用してファイルを開くことができます。
a、open()
open()で必要なパラメーターは、ターゲットファイルのファイル名(パスを含む)です。他のオプションのパラメーターの意味と完全な構文形式は次のとおりです。
open(file、mode = 'r'、buffering = -1、encoding = None、errors = None、newline = None、closefd = True、opener = None)
その中で:
ファイル:必須、ファイルパス(相対パスまたは絶対パス)
モード:オプション、ファイルオープンモード
バッファリング:バッファリングを設定します
エンコーディング:通常はutf8を使用します
エラー:エラーレベル
改行:改行文字を区別します
closefd:渡されたファイルパラメータタイプ
オープナー:カスタムオープナーを設定します。オープナーの戻り値は開いているファイル記述子である必要があります
b、モードパラメータ
オプションのパラメータの中で最も重要なのはファイルオープンモードモードで、デフォルト値は「r」です。これは、読み取り専用モードで開かれることを意味します。その他の一般的なモードは次のとおりです。
モード |
説明 |
r |
読み取り専用モード(デフォルト)。 |
w |
書き込み専用モードで、新しいファイルを作成します(パスの下にある同じ名前のファイル内のデータをクリアします)。 |
バツ |
書き込み専用モードで新しいファイルを作成しますが、同じ名前のパスがあると作成に失敗します。 |
A |
既存のファイルに追加します(存在しない場合は作成します)。 |
r + |
読み取りおよび書き込みモード。 |
b |
バイナリファイルのモードは、他のモード( "rb"や "wb"など)に追加されます。 |
t |
ファイルのテキストモード(バイトを自動的にUnicodeにデコードする)を他のモード(「rt」や「xt」など)に追加できます。 |
この記事では、より一般的に使用されるモードのいくつかを例として選択します。関係のない他のファイルを開くモードについては、テスト用に独自の例を作成できます。
c、エンコーディングパラメータ
使用できる別のパラメーターはエンコードです。エンコードとは、エンコードを意味します。つまり、開きたいファイルのエンコード形式がコンパイラで使用されているエンコード形式と一致しない場合は、パラメータ項目を追加する必要があります。通常は「encoding = 'utf-8'」を使用します。 open()関数で増加するキーワードパラメータ。
ターゲットファイルに英字、数字、文字しかない場合は、通常、このパラメータを追加する必要はありません。ターゲットファイルに漢字が含まれている場合は、このパラメータを使用するだけでなく、ターゲットファイルを作成するときに注意する必要があります。保存する前にエンコードモードをUTF-8に変更する必要があります。そうしないと、デコードされない場合があります。このとき、「encoding = 'utf-8'」を使用しても、UTF-8形式ではないため、対象ファイル自体を開くことはできません。
d、ファイルを開きます
ファイルopen()関数を開く方法を学習した後、次のコードを記述してターゲットファイルを開くことができます。
In [1]: path = 'lesson/text/contents.txt' # 相对路径,其他方式请大家自行练习
file_object = open(path, encoding = 'utf-8') # 默认mode = 'r'
相対パスと絶対パスは一般に比較的長いため、パスまたはファイル名変数にパスを割り当ててから、open()の関数として使用するのが通例です。もちろん、パスをパラメータとして直接使用することもできます。特に、ターゲットファイルのファイル名を直接使用する場合は、open()のパラメータとして直接使用できます。パスまたはファイル名のどちらを使用する場合でも、文字列の形式で記述する必要があることに注意してください。
ファイルを開いてから読むことはできますか?
開いたばかりのファイルfile_objectを印刷して、それがターゲットファイルのコンテンツであるかどうかを確認しましょう。
In [2]: path = 'lesson/text/contents.txt'
file_object = open(path, encoding = 'utf-8')
print(file_object)
Out[2]: <_io.TextIOWrapper name='lesson/text/contents.txt' mode='r' encoding='utf-8'>
ご覧のとおり、返される結果はターゲットファイルの内容ではなく、イテレータです。つまり、open()関数がターゲットファイルを開いた後は、トラバースに使用できるデータのみが返されます。これは、次の記事でファイルとターゲットファイルを1行ずつ読み取るときに発生します。コンテンツは他の方法で読む必要があります。
次の記事では、ファイルを読み取るためのいくつかの方法に焦点を当てますので、ご期待ください。
この記事を読んでくれてありがとう!ご不明な点がございましたら、メッセージを残してご相談ください^ _ ^
「手をつないでPythonを学ぶ」シリーズの他の記事を読むには、公式アカウントに従ってメニュー選択をクリックするか、以下のリンクをクリックして直接アクセスしてください。
「手をつないでPythonを学ぶ」1-なぜPythonを学ぶのか?
「手をつないでPythonを学ぶ」2-Pythonのインストール
「手をつないでPythonを学ぶ」3-PyCharmのインストールと構成
「手をつないでPythonを学ぶ」4-HelloWorld!
「手をつないでPythonを学ぶ」5-JupyterNotebook
「手をつないでPythonを学ぶ」11-文字列のフォーマットされた出力
「手をつないでPythonを学ぶ」14-インタラクティブな入力
「手をつないでPythonを学ぶ」23-組み込みシーケンス関数
「手をつないでPythonを学ぶ」27-カスタム関数のパラメーター
「手をつないでPythonを学ぶ」28-カスタム関数の戻り値
ファンの方へ:「Pythonも言った」パブリックアカウントをフォローし、「Hand 31」と返信すると、この記事で使用されているサンプル文を無料でダウンロードできます。