Python open()ファイル処理の使用説明

4234 ワード

1.open()構文open(file[,mode[,buffering[,encoding[,errors[,newline[,closefd=True]]]]]])open関数には多くのパラメータがあり、よく使われるのはfile,mode,encoding fileファイルの場所であり、引用符modeファイルを付ける必要があるモードを開く必要があります.以下の3 bufferingの値は0,1,>1の3つで、0はbufferが閉じることを表します(バイナリモードのみに適しています).1はline bufferを表し、>1は初期化されたbufferサイズを表す.Encodingは、返されるデータがどのような符号化を採用するかを示し、一般的にutf 8またはgbkを採用する.errorsの値は一般的にstrict,ignoreがあり、strictを取ると文字符号化に問題が発生するとエラーが報告され、ignoreを取ると符号化に問題が発生し、プログラムは無視され、次のプログラムを実行し続ける.Newlineで取れる値はNone,r,",'r',改行を区別するのに用いられるが,このパラメータはテキストモードにのみ有効である.closefdの値は、入力されたファイルパラメータに関係し、デフォルトではTrue、入力されたfileパラメータはファイルのファイル名、値がFalseの場合、fileはファイル記述子、ファイル記述子とは非負の整数であり、Unixカーネルのシステムでファイルを開くと、ファイル記述子が返されます.
2.Pythonではfile()とopen()を区別して両方ともファイルを開くことができ、ファイルを操作することができ、似たような使い方やパラメータもありますが、この2つのファイルの開き方には本質的な違いがあります.fileはファイルクラスで、file()でファイルを開くのはファイルクラスを構築するのに相当し、open()でファイルを開くのはpythonの組み込み関数で操作するので、openを使用することをお勧めします
3.パラメータmodeの基本値
Character
Meaning
‘r'
open for reading (default)
‘w'
open for writing, truncating the file first
‘a'
open for writing, appending to the end of the file if it exists
‘b'
binary mode
‘t'
text mode (default)
‘+'
open a disk file for updating (reading and writing)
‘U'
universal newline mode (for backwards compatibility; should not be used in new code)
r,w,aはファイルを開く基本モードであり、読み取り専用、書き込み専用、追加モードに対応している.b、t、+、Uの4文字は、以上のファイルオープンモードと組み合わせて使用し、バイナリモード、テキストモード、読み書きモード、汎用改行文字は、実際の状況に応じて組み合わせて使用し、
一般的なmode値の組合せ

r rt     ,     
rb        
 
w wt      ,          
wb      ,         
 
a      ,        
a+      ,         
 
w+    , a+           
r+    , a+              

4.テストファイルtest.txt、内容は以下の通りです.

Hello,Python
www.jb51.net
This is a test file

書き込みファイルの直感的な表示の違いをテストするために、小さなセグメントコードを使用します.

test = [ "test1
", "test2
", "test3
" ] f = open("test.txt", "a+") try: #f.seek(0) for l in test: f.write(l) finally: f.close()

a+、w+とr+モードの違い(テスト後にtest.txtを復元)a+モード

# cat test.txt
Hello, Python
www.jb51.net
This is a test file
test1
test2
test3

w+モード

# cat test.txt
test1
test2
test3

r+モードファイルを書き込む前に、上記のコードにf.seek(0)を付けて、ファイルを書き込む場所(ファイルの先頭)を特定し、文字数(注意も1文字)を直接上書きします.

# cat test.txt
test1
test2
test3
inuxeye.com
This is a test file

注意:r+モードでファイルを開く場合、このファイルは存在する必要があります.そうしないと、エラーが発生します.「r」モードも他のテストです.

>>> f = open('test.txt')
>>> f.read() #      ,     
'Hello,Python
www.jb51.net
This is a test file
' >>> f.read() # , ''

>>> f = open('test.txt')
>>> f.readline() #     ,       
'Hello,Python
' >>> f.tell() # 13 >>> f.readline() 'www.jb51.net
' >>> f.tell() 30 >>> f.readline() 'This is a test file
' >>> f.tell() 50 >>> f.readline() '' >>> f.tell() # 50

>>> f = open('test.txt')
>>> f.readlines() #      ,     
['Hello,Python
', 'www.jb51.net
', 'This is a test file
'] >>> f.tell() # 50

>>> f = open('test.txt','w') #       
>>> f.write('Hello,Python!') #        1024,     ,      
>>> f.flush() #     
>>> f.close() #         
>>> f.write('Hello,Linuxeye') #   ,   ,        
Traceback (most recent call last):
 File "", line 1, in 
ValueError: I/O operation on closed file