pythonラーニング9-ファイルの基本操作と高度な操作
1.ファイルの基本操作
ファイルを開き、ファイルハンドルを取得する:f=open('filename',encoding='utf-8')、openはオペレーティングシステムの符号化方式を照会し、この符号化方式に従ってファイルを読み取り、ファイルがutf-8符号化を使用する場合、指定符号化を開く.
ハンドルによるファイル操作:data=f.read()ファイルを閉じる:f.close()2.ファイル操作モード
r、読み取り専用モード、書き込み不可、f=open('filename','r',encoding='utf-8') f.readable()ファイルが読めるかどうかを判断する f.readline()は、ファイルの1行を読み取る、カーソルが移動するにつれて、各行を順次読み出す.
f = read('xxx')
f.read()
f.readline() # , ,
f.readlines()すべてのローを読み出し、各ローを文字列として保存し、すべてのローをリストとして保存する.
open()にはパラメータnewline,f=open('1.txt','r',newline=')が含まれており、pythonは自動的に異なるプラットフォームの改行記号をwindowsプラットフォーム上で改行記号をr に変換します.
w、書き込みモードのみ、読み取り不可、f=open('filename','w',encoding='utf-8')で、ファイルに書き込まれる内容は文字列でなければなりませんファイルが存在する場合、ファイルを空にして、その後の操作を行う.
ファイルが存在しない場合は、ファイルが新規作成されます.
f.write('contents')は、1行1行のコンテンツをファイルに書き込み、現在のカーソルの位置からに書き込む.
f.writelines(list)は、リストに内容を書き、リストの各要素をファイルに書き換える f.writeable()は、ファイルがに書けるかどうかを判断する.
x、書き込みモードのみ、ファイルが存在しない場合はそのファイルを作成し、ファイルが存在する場合はとエラーを報告する.
a,追加モード,f=open('filename','a',encoding='utf-8') aモード自体が書き込みモードであり、ファイルを追加で書き込むにすぎない.
r+,読み書きモード,f=open('filename','r+',encoding='utf-8') w+,x+,a+,書き込み読み出しモード rb,wb,xb,abは、バイトで読み書き、符号化を指定できない.
fr = open('TextFile1.txt','rb')
print(fr.read().decode('gbk'))
f = open('test22.py','wb')
f.write(bytes('asdfghjkl
', encoding = 'utf8'))
f.write(' '.encode('utf8'))
注意:バイナリから文字列に変換してdecode()と表示し、文字列からバイナリに変換してencode()として格納します.
ファイルを自動的に閉じる方法:
with open('file','w') as f:
f.write('asdf')
with open('file1','w') as f1, open('file2','w') as f2
f1.write('asdf')
f2.write('ghjkl')
3. ファイルの操作方法
f.closed、ファイルがを閉じるかどうかを判断する
f.encoding、表示ファイルが開く符号化方式 f.flush()は、メモリ内のテキストをファイルにリフレッシュし、ファイル内容を更新する.
f.name、ファイル名 f.tell()は、現在のカーソルの位置をバイトカウントで表示する.
f.seek(0)は、カーソルを0位置に移動し、バイトカウントに従って
f.read(4)は、文字カウントに従って4文字を読み出す.
f.truncate(10)は、最初の10バイトを切り取り、元のファイルに書き込み、ソースファイルを上書きする.
4.ファイルの詳細操作
f.seek(,0)、0はカーソル位置が絶対位置を採用することを示す.
f.seek(,1)は、ファイルをbモードで開くことを要求し、相対位置を採用し、を累積する.
f.seek(,2)は、逆順でbモードで開き、ファイルの末尾からカーソルを移動する.
ファイルを循環する推奨方法:以下の第1の方法はすべてのファイルの内容を読み出して、それから1行1行の循環;第2の方法は、1行1行のファイルの内容を読み取るだけである.
for i in f.readlines():
print(i)
#
for i in f:
print(i)
5.大ファイルの最後の行を読み込む
重要なアイデア:ファイルの末尾から文字列を読み出す個数を増やすたびに、最後の行が完全に読み込まれるまで、インデックス[-1]で読み取りデータの最後の行を取り出します.
for i in f:
offs=-10
while True:
f.seek(offs, 2)
data=f.readlines()
if len(data)>1:
print(' %s' %(data[-1]. decode('utf-8')))
break
offs*=2