「Pythonの基礎 - ファイル」の版間の差分

ナビゲーションに移動 検索に移動
567行目: 567行目:
また、1度に読み込むデータのバイト数を指定する場合は、従来の方法と同様、ファイルオブジェクトに対して、<code>read</code>メソッド等を使用する。<br>
また、1度に読み込むデータのバイト数を指定する場合は、従来の方法と同様、ファイルオブジェクトに対して、<code>read</code>メソッド等を使用する。<br>
詳細は、[[Pythonの基礎 - ファイル#バイナリファイル]]を参照すること。<br>
詳細は、[[Pythonの基礎 - ファイル#バイナリファイル]]を参照すること。<br>
<br><br>
== ファイルの作成 / 削除 ==
==== ファイルの作成 ====
空のファイルを新規作成する場合は、<code>open</code>関数を使用する。<br>
<br>
<code>open</code>関数は、ファイルを読み書きするためにファイルを開く関数であるが、<br>
<code>w</code>モードでファイルを開く場合、指定したパスが示すファイルが存在しない時はファイルを新規作成する。<br>
<syntaxhighlight lang="python">
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
</syntaxhighlight>
<br>
<code>open</code>関数の詳細は、[[Pythonの基礎 - ファイル#ファイルのオープン / クローズ]]、および、[[Pythonの基礎 - ファイル#テキストファイルの書き込み]]を参照すること。<br>
<br>
<syntaxhighlight lang="python">
import os
path = './test/uesr.txt'
f = open(path, 'w')
# f.write('')  # 何も書き込まなくてもファイルは新規作成される
f.close()
</syntaxhighlight>
<br>
==== ファイルの削除 ====
ファイルを削除する場合は、<code>os</code>モジュールの<code>remove</code>関数を使用する。<br>
<br>
<code>remove</code>関数は、第1引数に指定したパスが示すファイルを削除する。<br>
<syntaxhighlight lang="python">
os.remove(path, *, dir_fd=None)
</syntaxhighlight>
<br>
存在しないファイルを削除する場合、例外<code>FileNotFoundError</code>が発生する。<br>
<syntaxhighlight lang="python">
import os
path = './test/name.txt'
os.remove(path)
</syntaxhighlight>
<br>
なお、<code>remove</code>関数はファイルのみ削除することができる。<br>
もし、ディレクトリを削除しようとする場合、例外<code>PermissionError</code>が発生する。<br>
<br><br>
== ファイルの作成 / 削除 (pathlibモジュールの使用) ==
==== ファイルの作成 (pathlibモジュールの使用) ====
空のファイルを新規作成する場合は、pathlibモジュールにある<code>Path</code>クラスの<code>touch</code>メソッドを使用する。<br>
<syntaxhighlight lang="python">
Path.touch(mode=0o666, exist_ok=True)
</syntaxhighlight>
<br>
<code>Path</code>クラスの<code>touch</code>メソッドは、パスが示すファイルを新規作成する。<br>
第1引数には、新規作成するファイルの権限を設定する。<u>省略された場合は、8進数で<code>0o666</code>が設定される。</u><br>
<br>
ファイルを新規作成するには、まず、新規作成するファイルのパスから<code>Path</code>クラスのインスタンスを生成した後、<code>touch</code>メソッドを使用する。<br>
<syntaxhighlight lang="python">
import pathlib
p = pathlib.Path('./test/uesr.txt')
p.touch()
</syntaxhighlight>
<br>
==== ファイルの削除 (pathlibモジュールの使用) ====
ファイルを削除する場合は、pathlibモジュールにある<code>Path</code>クラスの<code>unlink</code>メソッドを使用する。<br>
<syntaxhighlight lang="python">
Path.unlink(missing_ok = False)
</syntaxhighlight>
<br>
第1引数に<code>True</code>を指定する時、対象のファイルが存在しない場合でもエラーは出力されない。(省略可能)<br>
<br>
ファイルを削除するには、まず、削除するファイルのパスから<code>Path</code>クラスのインスタンスを生成した後、<code>unlink</code>メソッドを使用する。<br>
<syntaxhighlight lang="python">
import pathlib
p = pathlib.Path('./test/uesr.txt')
p.unlink()
</syntaxhighlight>
<br><br>
== ファイルの存在確認 ==
指定したパスが示すファイルが存在するかどうかを確認する場合、<code>os.path</code>モジュールの<code>exists</code>関数を使用する。<br>
<br>
引数に指定したパスが存在する場合は、<code>True</code>を返す。<br>
また、<code>exists</code>関数は、引数に指定したパスがファイルまたはディレクトリであっても存在する場合は、<code>True</code>を返すことに注意する。<br>
<syntaxhighlight lang="python">
os.path.exists(path)
</syntaxhighlight>
<br>
<syntaxhighlight lang="python">
import os
import pathlib
path1 = './test/address.txt'
if os.path.exists(path1) :
    print(path1 + 'は存在します')
else :
    print(path1 + 'は存在しません')
path2 = './test/user.txt'
if os.path.exists(path2) :
    print(path2 + 'は存在します')
else :
    print(path2 + 'は存在しません')
# 出力
True
</syntaxhighlight>
<br>
引数に指定されたパスにおいて、ファイルまたはディレクトリを判別するには、[[Pythonの基礎 - ファイル#ファイルとディレクトリの判別]]を参照すること。<br>
<br><br>
== ファイルの存在確認 (pathlibモジュールの使用) ==
指定したパスが示すファイルが存在するかどうかを確認する場合、<code>pathlib</code>モジュールにある<code>Path</code>クラスの<code>exists</code>メソッドを使用する。<br>
<br>
パスが示すファイルやディレクトリが実際に存在するかどうかを返します。<br>
また、<code>Path</code>クラスの<code>exists</code>メソッドは、引数に指定したパスがファイルまたはディレクトリであっても存在する場合は、<code>True</code>を返すことに注意する。<br>
<syntaxhighlight lang="python">
Path.exists()
</syntaxhighlight>
<br>
ファイルの存在を確認するには、まず、存在を確認するファイルのパスから<code>Path</code>クラスのインスタンスを生成した後、<code>exists</code>メソッドを使用する。<br>
<syntaxhighlight lang="python">
import pathlib
path1 = './test/address.txt'
p1 = pathlib.Path(path1)
if p1.exists() :
    print(path1 + 'は存在します')
else :
    print(path1 + 'は存在しません')
path2 = './test/user.txt'
p2 = pathlib.Path(path2)
if p2.exists() :
    print(path2 + 'は存在します')
else :
    print(path2 + 'は存在しません')
</syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Python]]
[[カテゴリ:Python]]

案内メニュー