学習Pythonのファイル操作2

図1に示すように、ファイルモード

Xモード(運転制御ファイルのモード)
×:
  書き込み専用モード、読み取り不可能、
  それは存在しないが作成され、エラーがあります。
ファイルが読み込まれ、制御モードの内容を書き込む
T:
1、列単位の(ユニコード)として読み取られる
2、唯一のテキストファイル
符号化パラメータを指定しなければならない3文字コードを指定する必要があり、
バイナリモード:bは
1、リーダバイトである
すべてのファイルが可能のため、2
3、符号化パラメータを指定してはなりません文字エンコーディングを指定してはいけません

:概要
プレーンテキストファイル操作モードtのヘルプ、私たちのリンクのエンコードの保存およびデコード、Bには、1をこの時間tがより便利モードであるように、符号化及び復号化マニュアル必要とモード
2、使用するモードB(等の画像、ビデオ、オーディオなど)のみ非テキストファイル
Bモードアプリケーション:
ファイルのコピーツール 
INPUT =(のSRC_FILEで' ソースファイルパス>>:' ).strip()
とdst_file = INPUT('ターゲット:ファイルパス>> ' .strip())
を開く(R&LTと' {} 'のSRC_FILEで.format( )、MODE = ' RB ' )AS F1、\ 
    開く(R&LT ' {} ' .format(及びdst_file)、MODE = ' WB ' )AS F2:
    RES = f1.read()が大きすぎるメモリであるフットプリント#
    F2。書き込み(RES)

    のためのラインでのF1:
        f2.write(ライン)

ファイル操作の2他の方法

2.1読み出し動作関連

2.1.1ループは、ファイル読み込み

Fの行のための行によってモード1リードデータ線(データの単一ラインが長い時間をかけてコンテンツに時間の原因となる場合大)。
1 
開く(R ' g.txt '、モード= ' RT '、=コード' UTF-8 ' )、Fとおり
     のためのF:
         プリント(ライン(線)LEN)
2 
開く(R ' g.txt 'モード= ' RB ' Fなど)
     のためのF:
         プリント(ライン)
 3 
オープン(rの' test.jpg 'モード= ' RB ')Fとして:
     のためのF:
         プリント(ライン)

 

図2の実施形態で、データ自身の制御量たびにデータが読み出されます

オープン(rの' test.jpg '、MODE = ' RB ' :)は、fのように
     しばらく真:
        RES = f.read(1024) 1024 
        の場合でlen(RES)== 0:
             ブレーク
        ない解像度の場合:
        #の    ブレーク
        印刷(LEN(RES))

 

2.1.2f.readlineとf.readlinesは
  
readlineの:読み取りラインを
オープンと(R ' g.txt '、モード= ' RT '、=コード' UTF-8 ' )、Fとして:
     RES1 = f.readline() 
    RES2 = f.readline() 
    プリント(RES2)

    一方、真: = f.readline()
         場合でlen(行)== 0:
             ブレーク
        プリント(ライン)

 

  readlines:コンテンツを一度にメモリに読み込まれ、各行「\ n」は分割のリストを生成します。(強調:メモリ・オーバーフロー原因総会を介してコンテンツ場合f.read()とf.readlines()は、メモリに一回の内容を読んでいます)
オープンと(R ' g.txt '、モード= ' RT '、=コード' UTF-8 ' )、Fとして:
    RES = f.readlines()
     プリント(RES)

 

2.2書き込み関連の操作

f.writelines():文字列のシーケンスをファイルに書き込むことができ、このシーケンスの文字列は、反復オブジェクトによって生成することができます。
オープンと(' h.txt '、モード= ' 質量'、=コード' UTF-8 ' Fとして):
    f.write( '1111 \ N222 \ n3333 \ n')

    #1 、L = [ '11111 \ n'は、 '2222'、 '3333'、4444] 
    L = [ ' 11111 \ n '' 2222 '' 3333 ' ]
     Lの行のための:
         f.write(ライン)
    f.writelines(L)


オープンと(' h.txt '、モード= ' WB ' Fとして):
    #1 L = [
         '1111aaa1 \ n'.encode(' UTF-8 ')、 
         ' 222bb2'.encode( 'UTF-8')、 
         '33eee33'.encode(' UTF-8「) 
    ] 

    #は1を追加した:場合純粋な英語の文字を直接得ることができるプレフィックスはタイプBバイト
    #のLを= [ 
         b'1111aaa1 \ N- ' 
    #の     b'222bb2' 、
    #1      b'33eee33 ' 
    ] 

    #のサプリメント2:'オン' .encode(」UTF 8で'コード=' UTF-8 '))バイト(に相当する' 
    L = [ 
        バイト(' ああに' =コード、' UTF-を8 ' )、 バイト'パンチ金型 =エンコード、UTF-を。8' )、
        バイト(' 兄弟' =コード、' UTF-を8 ' 
    ] 
    f.writelines(L)

 

f.flush:すぐにハードディスクにデータを書き込みます。
(オープンと' h.txt '、モード= ' 質量'、=コード' UTF-8 ' :Fなど)
    f.write(' ' #1 )(f.flush

 

その他2.3

(オープンと' h.txt '、モード= ' 質量'、=コード' UTF-8 ' :Fなど)
     、印刷(f.readable()) 
     プリント(f.writable())
     プリント(f.encoding)
     プリント( f.name)

プリント(f.closed)

3.高度な制御ファイルポインタの操作
ポインタ移動手段は、バイト/バイトです。唯一の特別な場合:Tパターンで読み出し(N)、n文字の数を表します。
(オープンと' aaa.txt '、モード= ' RT ' =コード、' UTF-8 ' :Fとして)
    RES = f.read(4 プリント(RES)

f.seek(N、モード):nは移動バイト数を指し
モード:モード0:基準ファイルヘッダは 
f.seek(9 、0)
f.seek( 3,0) 3。 

モード1:基準電流ポインタ位置 
f.seek(9,1 
f.seek( 3,1) 12は

モード2:基準位置は、ファイルの終わりである後方に移動すべき 
f.seek(-9,2) 3。 
f.seek(-3,2) 9。 

強調:専用モード0 tに使用されてもよい、1,2はモードBで使用しなければなりません

 

f.tell():現在のファイルポインタの位置を取得します。
オープンと(' aaa.txt '、モード= ' RB ' :)Fとして
    f.seek( 9,1 
    f.seek( 3,1) 12 
    プリント(f.tell())
 
 

おすすめ

転載: www.cnblogs.com/imark7/p/12506114.html