pythonファイルのwith open()を読み込む


ファイルの読み書きは最も一般的なIO操作です.Pythonにはファイルを読み書きする関数が内蔵されており、使い方はCと互換性があります.
open()VS with open()
現在最もよく使われているのはwith open()関数で、まずopen()との違いを紹介します.open()が完了したらclose()メソッドを呼び出してファイルを閉じなければなりません.ファイルオブジェクトはオペレーティングシステムのリソースを占有し、オペレーティングシステムが同じ時間に開くことができるファイルの数も限られています.ファイルの読み書き時にIOErrorが発生する可能性があります.エラーが発生すると、後のf.close()は呼び出されません.
このトラブルを解決するために、Pythonはwith文を導入してclose()メソッドを自動的に呼び出します.
#      
with open('input_filename.txt','r') as f:#r    ,    
   df=pd.read_csv(f)  
   print(f.read())
'''
     :
r:	         。
rb:                 。
r+:           。             。
rb+:                。
'''
#      
with open('output_filename.csv', 'w') as f:
   f.write('hello world')  
'''
     :
w:	           。             。        ,     。
wb:	                 。             。        ,     。
w+:	          。             。        ,     。
wb+:                。             。        ,     。
a:          。        ,             。    ,                。        ,         。
ab:	                。        ,             。    ,                。        ,         。
a+:	          。        ,             。           。        ,         。
ab+:                。        ,             。        ,         。
''' 

メソッドおよびプロパティ
file.read([size])   #            ,    size        
file.readlines([size])   #           ,size    
file.write(str)   #        
file.writelines(strings)   #          
file.close()   #    

file.closed	#     ,        True,   False
file.mode	#Access            
file.encoding	#        
file.name	#   
file.newlines	#          None,               ,              ,                    
file.softspace	# 0         ,        ,1    。            ,       

に注意
  • UTF-8以外の符号化テキストファイルを読み込むにはopen()関数にencodingパラメータ
  • を入力する必要がある.
  • 読み込み時にread()を呼び出すと、ファイルのすべての内容が一度に読み出され、ファイルが10 Gあるとメモリが爆発し、念のためread(size)メソッドを繰り返し呼び出し、毎回最大sizeバイトの内容を読み取ることができます.
  • 呼び出しreadline()は、1行のコンテンツを読み出すたびに、readline()を呼び出してすべてのコンテンツを1回読み出し、行ごとにlistを返すことができる.
  • 必要に応じて呼び出す:ファイルが小さい場合、read()が一度に読み取るのが最も便利である.ファイルサイズが特定できない場合は、read(size)を繰り返し呼び出して比較するのが安全です.プロファイルの場合はreadlines()を呼び出すのが最も便利です