pythonのI / Oプログラミング

1.ファイルの読み取りと書き込み

ファイル、F =オープン( '/ユーザ/ test.txtの'、 'R')を開くために使用開き、rは読み出しを表します

ファイルが存在しない場合は、例外IOErrorがスローされます

read()メソッドを読み込むためのファイルを開きます、

最後に、近い閉じるための()メソッド

Pythonは声明で導入され、最終的には同じに影響を与える...試みるが、closeメソッドをコールしていないました

>>>(オープンと' /パス/ファイル'' F ' 、Fとして):
     プリント(f.read)

、ファイルが10G、バーストのメモリがあれば、一回の全体の内容を読みます読んので安全のために、あなたが繰り返し呼び出すことができますread(size)サイズは、コンテンツのバイトに方法を、それぞれアップ読みください。また、呼び出しがreadline()呼び出し、テキストの各行読むことができますreadlines()リターンにすべてのコンテンツを押し、[OK]を読んで一度にlistしたがって、あなたがコールする方法を決定するために、必要に応じて。ファイルが小さい場合には、read()一回は、最も便利な読んで、あなたが繰り返し呼び出して、ファイルサイズを判断できない場合はread(size)、より安全な、それは、設定ファイルで呼び出す場合、readlines()最も便利:

>>> ためのラインf.readlines():
     プリント(line.strip())

ファイルオブジェクト

オブジェクトは、メソッドオープン関数が返すの定義をお読みください。

バイナリファイル:などと一緒に写真、ビデオ、などは「rb」モードがオンになっています

F =オープン>>>(' /Users/michael/test.jpg '' RB '  >>> 達し、f.read()
B ' \ XFF \ xd8 \ XFF \ XE1 \ xOO \ x18Exif \ xOO \ xOO .. 。'  進バイト

文字エンコーディング、エンコーディングを渡す必要

>>> F =オープン(' /Users/michael/gbk.txt '' R '、コード= ' GBK '  >>> f.read()
 ' 测试'

いくつかの非標準のコーディング出会いのファイル、あなたが遭遇する可能性のあるUnicodeDecodeErrorテキストファイルに不正な文字エンコーディングの一部と混合することができるので、。このような場合、open()関数は受信errors符号化エラー処理が発生した場合の様子を示すパラメータ。最も簡単な方法は、単に無視することです:

>>> F =オープン(' /Users/michael/gbk.txt '' R '、=コード' GBK '、エラーが= ' 無視します'

書き込みファイル:

>>> F =オープン(' /Users/michael/test.txt '' W '  >>> f.write(' こんにちは、世界!'  >>> f.close()
オープンして(' /Users/michael/test.txt '' W ' )としてf:
    f.write(' こんにちは、世界!'

'w'ファイルがすでに存在する場合は、ファイルモードに書き込み、それが直接(ファイルを削除することと等価新しい記事を書く)をカバーします。我々は、ファイルの末尾に追加したい場合はどのように行うには?それは渡すことができ'a'APPEND(アペンド)モードで書かれました。

 2.SrtingIO和BytesIO

1)はStringIO

メモリSTRでの読み取りと書き込み

書き込みへ

>>> から IO インポートたStringIO
 >>> F = にStringIO()
 >>> f.write(' こんにちは'  5 
>>> f.write('  '  1 
>>> f.write(' 世界!'  6 
>>> 印刷(f.getvalue())
ハローワールド!

読書の後

>>> から IO インポートたStringIO
 >>> F = StringIOを(' こんにちは\ NHI \ nGoodbye!!!'  >>> ながら、真:
... S = )(f.readline 
...      もし S == '' 
...          休憩
...      プリント(s.strip())
... 
こんにちは!
こんにちは!
さようなら!

2)BytesIO

バイナリデータを読み書き

>>> から IO インポートBytesIO
 >>> F = BytesIO()
 >>> f.write(' 中文' .encode(' UTF-8 ' ))
 6 
>>> プリント(f.getvalue())
B ' \ xe4 \ xb8 \ XAD \ XE6 \ X96 \のx87 "
>>> から IO インポートBytesIO
 >>> F = BytesIO(B ' \ xe4 \ xb8 \ XAD \ XE6 \ X96 \のx87 '  >>> f.read()
B ' \ xe4 \ xb8 \ XAD \ XE6 \ X96 \のx87 "

 3.操作するファイルとディレクトリ

pythonの内蔵osモジュールは内蔵の提供関数呼び出しインタフェース

>>> インポートOS
 >>> os.name
 ' NT '

「NT」タイプならばノートは、POSIXのLinux、UNIX、またはMac OS Xであれば、それは、そのウィンドウシステムを示し、

呼び出し元のunameの詳細な住所については()が、上記のunameウィンドウで提供されていません。

環境変数:

os.environに記憶されているオペレーティングシステム環境変数はすべて、我々は変数の値を取得する必要があり、あなたは「os.environ.get'keyを呼び出すことができます

ファイルやディレクトリの操作

os.pathの一部に、osモジュールの一部上のファイルやディレクトリの操作、表示、作成、次のように削除します。

>>> カレントディレクトリの絶対パスを表示 
>>> os.path.abspath(' ' ' C:\\ \\ ZMユーザー\\のAppData \\ \\ローカルプログラム\\ \\ Python37 Pythonの' 
>> > ディレクトリ内に新しいディレクトリを作成し、新しいディレクトリへの最初のフルパスそのうち 
>>> os.path.join(" C:\\ \\ ZMユーザー\\のAppData \\ \\ \\ローカルプログラム\\ Python37のPython ' ' TESTDIR ' ' C:\\ \\ ZMユーザー\\のAppData \\ \\ローカルのプログラムPython37 \\ \\ \\ TESTDIR Pythonの" 
>>> 、その後、目次を作成 
>>> OS .mkdir(" C:\\ \\ユーザーZM \\のAppData \\ \\ローカルプログラム\\ Pythonの\\ \\ Python37 TESTDIR "  >>>ディレクトリを削除します 
>>> os.rmdir(' C:\\ \\のAppDataユーザーZM \\ \\ \\プログラムローカルのPython \\ \\ \\ Python37 TESTDIR '

2つのパスが一つのパスにマージすると、直接のLinux、UNIX、またはMac OS X、os.path.join()を使ってくださいでは、os.path.join()を使ってください機能を使用するために、文字列をスプライシングしていない、そのような文字を返します。文字列:パート1 /パート2、およびWindowsで返さ一部-1 \パート2

スプリットパスos.path.split()関数を使用する場合

os.path.splitext()は、ファイル拡張子を直接得ることができます

ファイルフィルタ

>>> [X のための X  os.listdir(' 'IF os.path.isdir(X)] 
[ ' のDLL '' ドキュメント'' 含む'' のLib '' LIBS '' スクリプト'' TCL '' ツール' ]
 >>> 記載されているの.pyファイル 
>>>[X のための X  os.listdir(''もし os.path.isfile(X) os.path.splitext(X)[1] = ' の.py ' ] 
にSyntaxError:無効な構文
 >>> [X のための X  os.listdir(' 'であれば os.path.isfile(X) os.path.splitext(X)[1] == ' の.py ' ]

 4.シリアル

定義:プロセスからメモリに格納又は送信されても​​よいがシリアル化と呼ばれ

よるPythonのピクルスをシリアライズ

まず。ファイルにオブジェクトと書き込みをシリアル化しようとします

>>> インポートピクルス
 >>> D = dictの(名= ' ボブ'、年齢= 20、ソース= 88  >>> pickle.dumps(D)
B ' \ X80 \ X03} Q \ X00(X \ X04 \ X00 \ X00 \ x00nameq \ x01X \ X03 \ X00 \ X00 \ x00bobq \ x02X \ X03 \ X00 \ X00 \ x00ageq \ x03K \ x14X \ X06 \ X00 \ X00 \ x00sourceq \ x04KXu。" 
>>>

ファイルタイプに書き込まれたバイトに、または有する配列pickle.dump()直接書き込みファイルのようなオブジェクトの標的配列への

F =オープン( 'をdump.txt'、 'WB')

pickle.dump(D、F)

f.close()

ディスクからメモリへの読み出しと、バイトの第一のタイプのコンテンツを読み取ることができる場合)(pickle.loadオブジェクトをデシリアライズ

 JSON:標準形式のオブジェクトのシリアル化として、

PythonのJSONオブジェクトになり

>>> インポートJSON
 >>> D = dictの(名= ' ボブ'、年齢= 20、ソース= 88  >>> json.dumps(D)
 ' { "名前": "ボブ"、 "年齢":20 、 "ソース":88} "

PythonのJSONは、負荷()またはload()メソッドと、オブジェクトをデシリアライズすべきです

>>> json_str = ' { "年齢":20、 "ソース":33、 "名前":ボブ} ' 
>>> json.loads(json_str)

高度なJSON

pyhonの辞書は、しかし、非常に多くの場合、私たちはクラスを表すオブジェクト、その後、シリアル化を使用し、直接{}のJSONにシリアライズされたオブジェクト

 

 

おすすめ

転載: www.cnblogs.com/quanmeng/p/11921262.html