ホームページ  >  記事  >  バックエンド開発  >  ファイルの読み取り、書き込み、作成を行う Python メソッド

ファイルの読み取り、書き込み、作成を行う Python メソッド

高洛峰
高洛峰オリジナル
2017-02-23 11:09:141038ブラウズ

Pythonでのファイルやフォルダーの操作(ファイル操作関数)には、osモジュールとshutilモジュールが必要です。

現在のPythonスクリプトが動作するディレクトリパスである現在の作業ディレクトリを取得します: os.getcwd()

指定されたディレクトリ内のすべてのファイルとディレクトリ名を返します: os.listdir()

関数が使用されますファイルを削除するには: os .remove()

複数のディレクトリを削除: os.removedirs(r "c:python")

指定されたパスがファイルかどうかを確認します: os.path.isfile()

指定されたパスはディレクトリです: os.path.isdir()

それが絶対パスであるかどうかを判断します: os.path.isabs()

指定されたパスが実際に存在するかどうかを確認します: os.path.exists()

Returnパス ディレクトリ名とファイル名: os.path.split() 例: os.path.split('/home/swaroop/byte/code/poem.txt') 結果: ('/home/swaroop/byte/code' 、'poem .txt')

別の拡張子: os.path.splitext()

パス名を取得: os.path.dirname()

ファイル名を取得: os.path.basename()

シェルコマンドを実行: os .system()

環境変数の読み取りと設定: os.getenv() および os.putenv()

は、現在のプラットフォームで使用される行終端記号を提供します: os.linesep Windows は 'rn' を使用し、Linux は 'n を使用します' Mac では使用しているプラ​​ットフォームを示すために 'r' を使用します: os.name Windows の場合は 'nt'、Linux/Unix ユーザーの場合は 'posix' です

名前の変更: os.rename(old, new)

複数レベルのディレクトリを作成する: os.makedirs(r "c:pythontest")

単一のディレクトリを作成する: os.mkdir("test")

ファイル属性を取得する: os.stat(file)

ファイルを変更する権限とタイムスタンプ: os.chmod (ファイル)

現在のプロセスを終了: os.exit ()

ファイルサイズを取得: os.path.getsize (filename)

ファイル操作:

os.mknod("test. txt") は空のファイルを作成します
fp = open("test.txt",w) ファイルを直接開きます。ファイルが存在しない場合は、ファイルを作成します

オープンモードについて:

w は書き込みモードで開きます、

a は追加モードで開きます 開く (EOF で開始し、必要に応じて新しいファイルを作成します)

r+ 読み取り/書き込みモードで開きます
w+ 読み取り/書き込みモードで開きます ( w を参照)
a+ 読み取り/書き込みモードで開きます (a を参照)
rb バイナリ読み取りモードでオープンします
wb バイナリ書き込みモードでオープンします ( w を参照)
ab バイナリ追加モードでオープンします ( a を参照)
rb+ バイナリ読み取りおよび書き込みモードでオープンします ( r+ を参照)
wb+ バイナリ読み取りおよび書き込みモードでオープンします( w+ を参照)
ab+ バイナリ読み取りおよび書き込みモードでオープン モードはオープン (a+ を参照)

fp.read([size]) #size は読み取りの長さ (バイト単位) です

fp.readline([size] ) #1 行を読み取り、サイズが定義されている場合は、行の一部のみが返される可能性があります

fp.readlines([size]) # ファイルの各行をリストのメンバーとして扱い、このリストを返します。実際、これはループ内で readline() を呼び出すことによって内部的に実装されます。 size パラメータが指定されている場合、size は読み取られるコンテンツの全長を表します。これは、ファイルの一部のみが読み取られることを意味します。

fp.write(str) #str をファイルに書き込みます。write() は str の後に改行文字を追加しません。

fp.writelines(seq) #seq のすべての内容をファイルに書き込みます (より多くの行が書き込まれます)。一斉に)。この関数も、各行の後に何も追加せずに、忠実に記述するだけです。

fp.close() #ファイルを閉じます。 Python は、使用されなくなったファイルを自動的に閉じますが、この機能は保証されていません。自分でファイルを閉じる習慣を身に付けることをお勧めします。 ファイルを閉じた後にファイルを操作すると、ValueError が生成されます

fp.flush() #バッファの内容をハードディスクに書き込みます

fp.fileno() #long 整数の「ファイルラベル」を返します

fp.isatty() #ファイルが端末デバイスファイルかどうか(UNIX系の場合)

fp.tell() #ファイルの先頭を原点としてファイル操作マークの現在位置を返す

fp.next() #次の行を返し、ファイル操作フラグを次の行に移動します。ファイルが for...in file などのステートメントで使用される場合、トラバーサルを実装するために next() 関数が呼び出されます。

fp.seek(offset[,whence]) #ファイル操作マークをオフセット位置に移動します。このオフセットは通常、ファイルの先頭を基準にして計算され、通常は正の数になります。ただし、whence パラメーターが指定されている場合は、この限りではありません。whence を 0 にすると最初から計算を開始し、1 を指定すると現在の位置を原点として使用できます。 2はファイルの末尾を起点として計算することを示します。ファイルを a または a+ モードで開いた場合、書き込み操作が実行されるたびに、ファイル操作マークは自動的にファイルの最後に戻ることに注意してください。

fp.truncate([size]) #ファイルを指定されたサイズにカットします。デフォルトでは、現在のファイル操作マークの位置までカットされます。サイズがファイル サイズより大きい場合、システムによっては、ファイルが変更されないか、対応するサイズまでファイルが 0 でパディングされるか、ランダムなコンテンツが追加されることがあります。

ディレクトリ操作:
os.mkdir("file") ディレクトリの作成
ファイルのコピー:
shutil.copyfile("oldfile","newfile") oldfileとnewfileはどちらもファイルのみ可能です
shutil.copy("oldfile"," newfile") oldfile はフォルダーのみ、newfile はファイルまたはターゲット ディレクトリにすることができます
フォルダーをコピーします:
shutil.copytree("olddir","newdir") olddir と newdir はどちらもディレクトリのみにすることができ、newdir はディレクトリにする必要があります存在しません
ファイル (ディレクトリ) の名前を変更します
os.rename("oldname","newname") ファイルまたはディレクトリを使用するには、このコマンドを使用します
ファイル (ディレクトリ) を移動します
shutil.move("oldpos","newpos")
ファイルを削除
os.remove("file")
ディレクトリを削除
os.rmdir("dir")は空のディレクトリのみを削除できます
shutil.rmtree("dir") 空のディレクトリとコンテンツのあるディレクトリの両方を削除できます
ディレクトリを変換
os.chdir("path") パスを変更します

Python はファイルを読み書きします

1.open
open を使用してファイルを開いた後は、必ずファイル オブジェクトの close() メソッドを呼び出すことを忘れないでください。たとえば、try/finally ステートメントを使用すると、ファイルを最終的に閉じることができるようになります。

file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )

注: open ステートメントを try ブロックに置くことはできません。ファイルがオープンされました 例外が発生すると、ファイル オブジェクト file_object は close() メソッドを実行できません。

2. ファイルの読み取り
テキスト ファイルの読み取り
input = open('data', 'r')
#2 番目のパラメーターのデフォルトは r
input = open('data')

バイナリ ファイルの読み取り
input ( 'data', 'rb')

すべてのコンテンツを読み取ります
file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )

読み取り固定bytes
file_object = open('abinfile', 'rb')
try:
while True:
chunk = file_object.read(100)
チャンクでない場合:
break
do_something_with(chunk)
finally:
file_object .close( )

各行を読み取ります
list_of_all_the_lines = file_object.readlines( )

ファイルがテキストファイルの場合は、ファイルオブジェクトを直接走査して各行を取得することもできます:

file_object の行:
プロセス行

3 .ファイルの書き込み
テキストファイルの書き込み
output = open('data', 'w')

バイナリファイルの書き込み
output = open('data', 'wb')

書き込みファイルの追加
output = open( 'data', 'w+')

データを書き込む
file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )

複数行を書き込む
file_object .writelines(list_of_text_strings)

writelines を呼び出して複数行を書き込む方が、write を使用して一度に書き込むよりもパフォーマンスが高いことに注意してください。

ログ ファイルを処理するとき、次のような状況がよく発生します。ログ ファイルが巨大で、一度にファイル全体をメモリに読み込んで処理することが不可能です。たとえば、ログ ファイルをコンピュータで処理する必要があります。 2GB の物理メモリの場合、一度に処理できるのはその内容の 200MB のみです。
Python では、組み込みの File オブジェクトは、そのようなことを実現するための readlines(sizehint) 関数を直接提供します。次のコードを例に挙げます。

file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() -position

readlines(sizehint) 関数が呼び出されるたびに、約 200MB のデータが返され、ほとんどの場合、返されるデータは完全な行データである必要があります。 , 返されるデータのバイト数は、sizehint で指定した値よりもわずかに大きくなります (readlines(sizehint) 関数が最後に呼び出された場合を除く)。通常、Python はユーザー指定の sizehint 値を内部キャッシュ サイズの整数倍に自動的に調整します。

file は Python の特別なタイプで、Python プログラムで外部ファイルを操作するために使用されます。 Python ではすべてがオブジェクトであり、File も例外ではありません。ファイル メソッドと属性があります。まずファイル オブジェクトを作成する方法を見てみましょう:


file(name[, mode[,buffering]])
file() 関数は、ファイル オブジェクトを作成するために使用されます。open() というエイリアスがあり、これは組み込み関数です。そのパラメータを見てみましょう。そのパラメータはすべて文字列の形式で渡されます。 name はファイルの名前です。
mode はオープン モードで、オプションの値は r wa a U で、それぞれ読み取り (デフォルト) と書き込みを表し、さまざまな改行をサポートするモードを追加します。 w または a モードでファイルを開く場合、ファイルが存在しない場合は自動的に作成されます。また、w モードを使用して既存のファイルを開く場合、初期ファイル操作マークがファイルの先頭にあるため、この時点で書き込み操作を実行すると、元のファイルの内容は消去されます。間違いなく削除されます。歴史的な理由により、改行文字にはシステムごとに異なるモードがあります。たとえば、Unix では n ですが、Windows では、U モードでファイルを開くと、すべての改行モードがサポートされます。これは ' を意味します。 r' 'n' 'rn' はすべて改行を表すことができ、このファイルで使用される改行文字を格納するために使用されるタプルがあります。ただし、改行にはさまざまなモードがありますが、Python で読み取る場合は代わりに n が使用されます。モード文字の後に、2 つの記号 + b t を追加することもできます。これらは、それぞれ、ファイルの読み取りと書き込みを同時に行うことができ、ファイルをバイナリ モードまたはテキスト モード (デフォルト) で開くことができることを示します。
buffering 0 の場合はバッファリングなしを意味し、1 の場合は「行バッファリング」を意味し、1 より大きい数値の場合はバッファーのサイズを意味します (バイト単位である必要があります)。

ファイル オブジェクトには独自のプロパティとメソッドがあります。まずはファイルの属性を見てみましょう。


closed #ファイルが閉じられたかどうかをマークし、close()で書き換えます
encoding #ファイルエンコード
mode #オープンモード
name #ファイル名
newlines #ファイルで使用される改行モードはタプルです
softspace #boolean type 、通常は 0、print

file に使用される読み取りおよび書き込みメソッドと言われています:

F.read([size]) #size は読み取りの長さ (バイト単位) です
F.readline([size] )
# サイズが定義されている場合は、行の一部のみを返すことができます
F.readlines([size])
# ファイルの各行をリストのメンバーとして扱い、このリストを返します。実際、これはループ内で readline() を呼び出すことによって内部的に実装されます。 size パラメータが指定されている場合、size は読み取られるコンテンツの全長を表します。これは、ファイルの一部のみが読み取られることを意味します。
F.write(str)
#str をファイルに書き込みます。write() は str の後に改行文字を追加しません。
F.writelines(seq)
#seq の内容をすべてファイルに書き込みます。この関数も、各行の後に何も追加せずに、忠実に記述するだけです。

ファイルのその他のメソッド:

F.close()
#ファイルを閉じます。 Python は、使用されなくなったファイルを自動的に閉じますが、この機能は保証されていません。自分でファイルを閉じる習慣を身に付けることをお勧めします。ファイルを閉じた後にファイルを操作すると、ValueError が生成されます
F.flush()
#バッファの内容をハードディスクに書き込みます
F.fileno()
#long 整数「ファイルラベル」を返します
F .isatty()
#端末デバイスファイルかどうか(UNIX系の場合)
F.tell()
#ファイルの先頭を原点としてファイル操作マークの現在位置に戻る
F.next()
#次の行を返し、ファイル操作フラグを次の行に移動します。ファイルが for ... in file などのステートメントで使用される場合、トラバーサルを実装するために next() 関数が呼び出されます。
F.seek(offset[,whence])
#ファイル操作マークをオフセット位置に移動します。このオフセットは通常、ファイルの先頭を基準にして計算され、通常は正の数になります。ただし、whence パラメーターが指定されている場合は、この限りではありません。whence を 0 にすると最初から計算を開始し、1 を指定すると現在の位置を原点として使用できます。 2はファイルの末尾を起点として計算することを示します。ファイルを a または a+ モードで開いた場合、書き込み操作が実行されるたびに、ファイル操作マークは自動的にファイルの最後に戻ることに注意してください。
F.truncate([size])
#指定されたサイズにファイルをカットします。デフォルトでは、現在のファイル操作マークの位置までカットされます。サイズがファイル サイズより大きい場合、システムによっては、ファイルが変更されないか、対応するサイズまでファイルが 0 でパディングされるか、ランダムなコンテンツが追加されることがあります。

上記の Python でファイルを読み書き、作成する方法 (必読) は、エディターが共有したすべての内容ですので、参考にしていただければ幸いです。また、皆様にも PHP 中国語をサポートしていただければ幸いです。 Webサイト。

ファイルの読み取り、書き込み、作成に関する Python の方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。