1つ、文字エンコード
# unicode -------> enconde( u t f - 8 ) -------> bytes
バイトを取得し、ファイルに保存したり、ネットワーク経由で転送したりできます
# bytes --------> enconde( u t f - 8 ) -------> unicode
Python3の文字列エンコードはバイトを取得します
Python2の文字列はバイトです
Python 2は、文字列の前に「** u **」を追加します。これはユニコードです
2.ファイル処理
プロセス:ファイルを開く===>ファイルハンドルを取得して変数に割り当てる====>ハンドルを介してファイルを操作する==>ファイルを閉じる
ファイルを読む:
1 f =open( ‘aaaa.py ’ , ‘ r ’ ,encoding = ‘utf-8’ )23print( f.readline(),end= ‘’)#行を読む
45 print( f.readlines(), end=’’ )#すべて読む、改行なし
67 print( f.readable())#読み取り可能なファイル
89 print( f.writable())#書き込み不可能なファイル
1011 f.close()#終了後に閉じる必要があります。そうしないと、メモリを占有します。
ファイルの書き込み:
f =open( ‘new_2’, ‘w’,encoding=’utf-8’ )print( f.readable())#読めない
print( f.writable())#書き込み可能
f.write( ‘888888\n’ )#1行追加
f.write( ‘999999\n’ )#追加
f.writelines([ ‘787878\n’ , ‘878787\n’])#複数行追加
f.close()#ファイルを閉じる
追加:
f=open('new_2','a',encoding='utf-8')print(f.readable()) #読めない
print(f.writable()) #書き込み可能
f.write('888888\n') #1行追加
f.write('999999\n')
f.writelines(['787878\n','878787\n']) #複数行追加
f.close()
# rb
f=open('aaaa.py','rb') #バイト単位で開く
print(f.read().decode('utf-8'))
写真のコピー:
f=open('1.jpg','rb') #rbの方法で1を開く.JPG
data=f.read() #データはコンテンツをfに読み取ります
print(data)
f2=open('3.jpg','wb') #書き込みとして開く
f2.write(data) #データの内容をf2に書き込む
f2.close()
f.close()
# ab、バイナリ形式で追加
f=open('new_3.txt','ab')
f.write('aaaaa\n'.encode('utf-8'))
withopen('aaaa.py','r',encoding='utf-8')as read_f,\
open('aaaa_new.py','w',encoding='utf-8')as write_f:
data=read_f.read()
write_f.write(data)
ファイルの各行をループで取得します。
withopen('a.txt','r',encoding='utf-8')as f:while True:
line=f.readline()if not line:breakprint(line,end='')
lines=f.readlines() #小さなファイルの場合のみ
print(lines)
data=f.read()print(type(data))for line in f: #推奨用途
print(line,end='')
ファイルの変更:
方法1:小さなファイルにのみ適用可能
1 import os
23 withopen('a.txt','r',encoding='utf-8')as read_f,\
45 open('a.txt.swap','w',encoding='utf-8')as write_f:67 data=read_f.read()89 write_f.write(data.replace('alex_SB','alex_BSB'))10111213 os.remove('a.txt')1415 os.rename('a.txt.swap','a.txt')
# 方法2:
import os
withopen('a.txt','r',encoding='utf-8')as read_f,\
open('a.txt.swap','w',encoding='utf-8')as write_f:for line in read_f:
write_f.write(line.replace('alex_BSB','BB_alex_SB'))
os.remove('a.txt')
os.rename('a.txt.swap','a.txt')
ファイル機能操作紹介
機能 | 説明 |
---|---|
file.read([size]) | ファイルのすべての内容を読み取る |
file.readline([size]) | 行ごとに読み取る |
file.readlines([size]) | リスト内の要素として読み取られるすべての行 |
file.write(str) | ファイルに文字列を書き込む |
file.writelines(シーケンスまたは文字列) | ファイルに複数の行を書き込みます。パラメーターは反復可能なオブジェクト/リスト/タプルにすることができます... |
file.close() | 開いているファイルを閉じる |
file.fileno(self) | ファイル記述子 |
file.flush(self) | バッファの内容をハードディスクにフラッシュします |
file.isatty(self) | ファイルがttyデバイスであるかどうかを判断し、ttyデバイスの場合はTrueを返します |
file.readable(self) | 読み取り可能かどうかを判断し、読み取り可能な場合はTrueを返し、そうでない場合はFalseを返します |
file.readline(self、limit = -1) | 一度に1行のデータのみを読み取ります |
file.readlines(self、hint = -1) | コンテンツの各行をリストの要素として取得します |
file.tell(self) | ポインタ位置を取得 |
file.seek(self、offset、whence = io.SEEK_SET) | ファイル内のポインターの位置を指定します |
file.seekable(self) | ポインタは操作可能ですか |
file.writable(self) | 書き込み可能かどうか |
file.writlines(self、lines) | ファイルに書き込まれる文字列のシーケンス。シーケンスは任意の反復オブジェクト文字列にすることができます |
file.read(self、n = None) | 指定されたバイトデータを読み取り、パラメータを追加せずにデフォルトですべてを読み取ります |
file.write(self、s) | コンテンツをファイルに書き込む |
Recommended Posts