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にシリアライズされたオブジェクト