序文
pythonでは、ファイルオブジェクトが組み込まれており、ファイルオブジェクトを作成するopen()メソッドや、ファイルにコンテンツを書き込むwrite()メソッドなど、いくつかの組み込みメソッドを使用してファイル操作を実現できます。
1.基本的なファイル操作
1. ファイルを作成して開く
ファイルを操作するには、最初に指定されたファイルを作成または開き、ファイルオブジェクトを作成する必要があります。これは、組み込み関数open()を使用して実行できます。
file =open(file_name[,mode[,buffering]])'''
file_name :作成または開くファイル名
モード:ファイルを開く方法を指定するために使用されます
'''
モードパラメータのパラメータ値表
モード | 説明 |
---|---|
r | ファイルを読み取り専用として開きます。ファイルのポインタはファイルの先頭に配置されます。これがデフォルトのモードです。 |
rb | 読み取り専用のバイナリ形式でファイルを開きます。ファイルポインタはファイルの先頭に配置されます。これがデフォルトのモードです。 |
r + | 読み取りおよび書き込み用にファイルを開きます。ファイルポインタはファイルの先頭に配置されます。 |
rb + | 読み取りおよび書き込み用にバイナリ形式でファイルを開きます。ファイルポインタはファイルの先頭に配置されます。 |
w | 書き込み専用のファイルを開きます。ファイルが既に存在する場合は、ファイルを開いて最初から編集を開始します。つまり、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します。 |
wb | 書き込み専用のバイナリ形式でファイルを開きます。ファイルが既に存在する場合は、ファイルを開いて最初から編集を開始します。つまり、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します。 |
w + | 読み取りおよび書き込み用にファイルを開きます。ファイルが既に存在する場合は、ファイルを開いて最初から編集を開始します。つまり、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します。 |
wb + | 読み取りおよび書き込み用にバイナリ形式でファイルを開きます。ファイルが既に存在する場合は、ファイルを開いて最初から編集を開始します。つまり、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します。 |
a | 追加するファイルを開きます。ファイルがすでに存在する場合、ファイルポインタはファイルの最後に配置されます。つまり、新しいコンテンツは既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します。 |
ab | 追加するためにバイナリ形式でファイルを開きます。ファイルがすでに存在する場合、ファイルポインタはファイルの最後に配置されます。つまり、新しいコンテンツは既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します。 |
a + | 読み取りおよび書き込み用にファイルを開きます。ファイルがすでに存在する場合、ファイルポインタはファイルの最後に配置されます。ファイルを開くと、追加モードになります。ファイルが存在しない場合は、読み取りと書き込み用に新しいファイルを作成します。 |
ab + | 追加するためにバイナリ形式でファイルを開きます。ファイルがすでに存在する場合、ファイルポインタはファイルの最後に配置されます。ファイルが存在しない場合は、読み取りと書き込み用に新しいファイルを作成します。 |
注意
open()関数を使用してファイルを開く場合、デフォルトでGBKエンコーディングが使用されます。他のエンコーディングメソッドを使用する場合は、エンコーディングパラメータを追加する必要があります。
file = open(‘./text.txt’,’a+’,encoding=’utf-8′)
開くには元のファイルエンコーディング方法を使用する必要があります。そうしないと、エラーが報告されます
2. ファイルを閉じる
ファイルを開いた後、ファイルへの不必要な損傷を避けるために、時間内に閉じる必要があります。組み込み関数close()を使用できます。
file = open(‘./text.txt’,’a+’)
file.close()
注意
close()関数は、最初にバッファに書き込まれていない情報を更新し、それをファイルに書き込んでから、ファイルを閉じてファイルを保護します。
3. ファイルへの書き込み
文法
file = write(string)
demo
# ファイルを開く
file =open('./text.txt','a+')
# ファイルを書き込む
file =write('コードに従って、清まで生きる')
# ファイルを閉じる
file.close()
注意:
ファイルを再度書き込むときは、ファイルを開いたモードを挿入してください。そうしないと、元のデータが上書きされます。
4. ファイルの読み取り
ファイルを読み取るための前提条件は、ファイルを開くときに、指定されたオープンモードがr(読み取り専用)またはr +(読み取り/書き込み)であるということです。それ以外の場合、例外がスローされます。
(1)指定した文字を読む
file.read([size])
(2)1行読む
file.readline()
このメソッドは、テキストの行を読み取るために使用されます
(3)すべての行を読み取る
file.readlins()
2.ディレクトリ操作
Pythonには、ディレクトリまたはファイルを操作するための組み込みのosモジュールとサブモジュールos.pathがあります。
osモジュールによって提供されるディレクトリ関連の機能
機能 | 説明 |
---|---|
getcwd() | 現在の作業ディレクトリを返す |
listdir(path) | 指定されたパスの下のファイルとディレクトリの情報を返します |
mkdir(path [、mode]) | ディレクトリの作成 |
makedirs(path / path2…..) | マルチレベルディレクトリを作成する |
rmdir(path) | ディレクトリの削除 |
removeirs(/ path1 / path2 ...) | マルチレベルディレクトリを削除する |
chdir(path) | 現在の作業ディレクトリへのパスを設定します |
walk(top [、topdown [、onerror]) | traverse |
access(path、accessmode) | 指定されたファイルに特定の権限があるかどうかを取得します(accessmodeはR_OK(読み取り)、W_OK(書き込み)、X_OK(実行)、F_OK(存在)に等しい)、指定された権限がある場合は1を返します、それ以外の場合は0を返します。 |
chmod(path、mode) | pathで指定されたファイルのアクセス許可を変更する |
remove(path) | 指定されたファイルパスを削除します |
rename(src、dst) | ファイルまたはディレクトリsrcの名前をdstに変更します |
stat(path) | pathで指定されたファイルに関する情報を返します |
os.pathモジュールは、ディレクトリに関連する機能を提供します
機能 | 説明 |
---|---|
abspath(path) | ファイルまたはディレクトリの絶対パスを取得するために使用されます |
exists(path) | ディレクトリまたはファイルが存在するかどうかを判断するために使用されます。存在する場合はTrueを返し、存在しない場合はFalseを返します |
join(path、name) | ディレクトリまたはファイル名でディレクトリを結合します |
splitext() | 個別のファイル名と拡張子 |
split(path) | スプリットパスとファイル名 |
basename(path) | ディレクトリからファイル名を抽出します |
dirname(path) | ファイル名を含まないパスからファイルパスを抽出します |
isdir(path) | パスが有効かどうかを判断するために使用されます |
デモ-現在の作業ディレクトリを取得します
import os
print(os.getcwd())
デモ-ディレクトリが存在するかどうかを確認します
import os
print(os.path.exists(“c:\demo”))
注意
presents()はosのサブモジュールによって提供されるため、プレフィックスos.pathを追加する必要があります。
デモ-第1レベルのディレクトリを作成します
import os
path ="c://demo"
# 作成するディレクトリがすでに存在する場合は、例外がスローされます。最初に、作成するディレクトリが存在するかどうかを確認します。
if not os.path.exists(path):
os.mkdir(path)else:print('ディレクトリはすでに存在します')
注意
mkdir(path)によって作成されたディレクトリは、第1レベルのディレクトリです。渡されたパスの最後のレベルの親ディレクトリが存在しない場合、例外がスローされます。
デモ-マルチレベルディレクトリを作成します
import os
os.makedirs(“C:\demo1\demo2\…”)
デモ-ディレクトリを削除
import os
path ="C:\demo1\demo2"
# 削除するディレクトリを決定します。存在しない場合は、問題が発生します。
if os.path.exists(path):
os.rmdir("C:\demo1\demo2") #demo2ファイルを削除しました
print("ディレクトリが正常に削除されました!")else:print("ディレクトリが存在しません")
注意:
rmdir()関数は、空のディレクトリのみを削除できます。空でない場合、削除することはできません。次のコードを使用して、空でないディレクトリを削除できます。
import shutil
shutil.rmtree("C:\demo\text")
デモトラバースディレクトリ
os.walk()の戻り値は、3つの要素(dirpath、dirnams、filenames)を含むタプルジェネレーターオブジェクトです。
dirpath:現在通過したパスを表す文字列です
dirnames:現在のパスに含まれるサブディレクトリを表すリストです
filenames:現在のディレクトリ内のファイルのリストでもあります
os.walk(top,[topdown][,onerror][,followlinks])'''
top:トラバースするディレクトリを指定するために使用されます
topdown:トラバースする順序を指定するために使用されるオプションのパラメーター。True(デフォルト)の場合、Falseの場合は上から下へのトラバースを意味します。,子供の頃から上までの意味。
'''
import os
path ="C:\demo"
# rootは現在のルートパス、dirsにはパスの下のサブディレクトリ、filesにはサブディレクトリの下の2〜5年が含まれます
for root,dirs,fles in os.walk(path,topdown=True):for name in dirs:print(os.path.join(root,name))for name in files:print(os.path.join(root.name))
デモ-ファイルが現在のディレクトリに存在するかどうかを確認します
import os
path ="C:\demo"
filename ="love.txt"for root,dirs,files in os.walk(path):for name in files:if filename== name:print(os.path.join(root,name))
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts