python3 文件操作

文件對象:

 with open('/etc/hosts') as f:
 這樣打開文件不用使用X.close()手動關閉文件,使用with打開文件,在文件使用結結束後會自動關閉。

r  以讀方式打開(文件不存在則報錯)
w 以寫方式打開(文件存在則清空,不存在則創建)
a 以追加方式打開(必要時創建新文件)

r+ 以讀寫方式打開
w+ 以讀寫方式打開
a+ 以讀寫方式打開
open、file打開文件,一般用open
read讀
readline讀一行
readlines 讀全部

文件寫入:

>> file = open('/tmp/123.txt', 'w') #以寫方式打開文件
>> file.write('123456') #寫入字符串
6
>> file.write('\n') #寫入回車,默認是沒有回車的
1
>> file.close() #關閉文件

文件指針:
文件內移動:
    seek(offset[,whence]) :移動文件指針到不同的位置
    offset是相對於某個位置的偏移量
    whence的值,0表示文件開頭,1表示當前位置,2表示文件的結尾

tell():返回當前文件指針的位置

    python2中支持從直接將文件指針移動到倒數第三個字符,
    >>> f = open('/etc/hosts')
    >>> f.tell()  #查看當前文件指針的位置
    0
    >>> f.seek(-3, 2)  #將文件指針移動到倒數第三個字符,-3代表偏移量,2代表文件末尾
    >>> f.read()
    'n6\n'

    python3中文件打開方式必需以N + b的方式打開,纔可以使用指針從後往前移動
    >>> f = open('/opt/hosts', 'rb')
    >>> f.tell()
    0
    >>> f.seek(-3,2)
    155
    >>> f.read()
    b'n6\n'

            適用與日誌按時間節點截取的場景:
            一點文件寫入123數據到azj文件,
            讀取文件最後的文件指針位置到end當中,將文件內容讀取到data中。

        兩點文件寫入456數據到azj文件,
            將文件指針移動到文件2點的位置並將文件指針位置賦值給b,
            讀取1點到2點之間的文件內容:
                >>> data2 = f.read(b - end)     #讀取文件上次結束位置到第二次結束位置的內容
                >>> data2
                '456\n'

        三點文件寫入789數據到azj文件。
            此時文件指針在文件2點時的位置,將剩餘文件內容讀取到data3中:
                >>> data3 = f.read()            #讀取文件剩餘的內容
                >>> data3
                '789\n'

    >>> f = open('/tmp/azj.txt')   #首先輸入123到azj。文件中
    >>> f.seek(0, 2)                #把文件指針移動到行尾
    4
    >>> end = f.tell()              #把文件指針位置賦值
    >>> f.seek(0, 0)                #文件指針返回開頭位置
    0
    >>> data = f.read(end)          #讀取文件開頭到剛纔行尾文件指針的文件內容
    >>> data
    '123\n'
    >>> f.seek(0, 2)                #寫入456到azj文件,將文件指針移動到文件末尾
    8
    >>> b = f.tell()                #將文件指針位置賦值
    >>> f.seek(end, 0)              #將文件指針移動到上次結束位置
    4

    寫入789到azj文件
    >>> data2 = f.read(b - end)     #讀取文件上次結束位置到第二次結束位置的內容
    >>> data2
    '456\n'
    >>> data3 = f.read()            #讀取文件剩餘的內容
    >>> data3
    '789\n'

文件寫入:   
    以r+的方式打開文件時,寫入文件是以覆蓋的形式寫入。

 標準文件:
        程序一執行,就可以訪問三個標準文件
        標準輸入:一般是鍵盤,使用sys.stdin
        sys.stdin.<兩次TAB鍵>
        >>> sys.stdin.readline()
        asdf
        'asdf\n'  #和input差不多,區別是會讀取到回車的動作

    標準輸出:一般是顯示器緩衝輸出,使用sys.stdout
        sys.stdout.<兩次TAB鍵>
        >>> sys.stdout.write('12344')
        123445          #返回12344字符串並返回字符串的長度5
        >>> sys.stdout.writelines('123')
        123>>>          #返回字符串本身,沒有回車
    標準錯誤:一般是顯示器的非緩衝輸出,使用sys.stderr
        sys.stdeer.<兩次TAB鍵>
        >>> sys.stderr.writelines('123')    #標準錯誤輸出
        123>>> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章