Python文件讀寫緩衝區和文件讀寫操作實例

1、python文件緩衝區

f = open('test', 'w', 1)    # 第三個參數爲1表示行緩衝,默認值爲-1
while True:
    data = input('>>>')
    if not data:
        break
    f.write(data)
    f.flush()       # 立即刷新緩衝,寫入磁盤

f.close()       # 文件結束刷新緩衝區

2、python文件偏移量
定義:打開一個文件進行操作時系統會自動生成一個記錄,記錄中描述了我們對文件的一系列操作。其中包括每次操作到的文件位置。文件的讀寫操作都是從這個位置開始進行的。

"""
seek.py 文件偏移量演示
    seek(offset[,whence])   offset表示相對於某個位置移動的字節數。負數表示向前移動,正數表示向後移動
    whence是基準位置的默認值爲 0,代表從文件開頭算起,1代表從當前位置算起,2 代表從文件末尾算起。
    r w open 打開文件偏移量在開頭
    a 打開文件偏移量在結尾
    通常以二進制方式打開操作文件偏移量
"""  
f = open('test', 'wb+')
f.write(b'Hello World')
f.flush()
# print('文件偏移量:{0}'.format(f.tell()))
print('文件偏移量:%s' % (f.tell()))
# 操作文件偏移量
f.seek(5, 0)
data = f.read()
print(data)
f.close()

3、文件讀寫操作
file_object = open(file_name, access_mode=‘r’, buffering=-1)
功能:打開一個文件,返回一個文件對象。
參數:file_name 文件名;
access_mode 打開文件的方式,如果不寫默認爲‘r’
文件模式 操作
r 以讀方式打開 文件必須存在
w 以寫方式打開
文件不存在則創建,存在清空原有內容
a 以追加模式打開
r+ 以讀寫模式打開 文件必須存在
w+ 以讀寫模式打開文件
不存在則創建,存在清空原有內容
a+ 以讀寫模式打開 追加模式
rb 以二進制讀模式打開 同r
wb 以二進制寫模式打開 同w
ab 以二進制追加模式打開 同a
rb+ 以二進制讀寫模式打開 同r+
wb+ 以二進制讀寫模式打開 同w+
ab+ 以二進制讀寫模式打開 同a+
buffering 1表示有行緩衝,默認則表示使用系統默認提供的緩衝機制。
返回值:成功返回文件操作對象。

  • 讀文件操作函數

    read([size])
    功能: 來直接讀取文件中字符
    size:讀取字節數
    返回值: 返回讀取到的內容

    readline([size])
    功能: 用來讀取文件中一行
    size:默認-1,讀取一行,給定數值表示讀取字節數
    返回值: 返回讀取到的內容

    readlines([sizeint])
    功能: 讀取文件中的每一行作爲列表中的一項
    size:默認-1,讀取所有,給定數值表示讀取字節數
    返回值: 返回讀取到的內容列表

  • 寫操作函數

    write(string)
    功能: 把文本數據或二進制數據塊的字符串寫入到文件中去
    參數:要寫入的內容
    返回值:寫入的字符個數

    writelines(str_list)
    功能:接受一個字符串列表作爲參數,將它們寫入文件。
    參數: 要寫入的內容列表

  • 關閉文件操作
    file_object.close()

  • 常見文件操作函數
    1、獲取文件大小 os.path.getsize(file)
    2、查看文件列表 os.listdir(dir)
    3、查看文件是否存在 os.path.exists(file)
    4、判斷文件類型 os.path.isfile(file)
    5、刪除文件 os.remove(file)

4、文件操作練習

"""
輸入要複製的文件路徑,將文件複製到另外一個文件目錄下
"""
filename = input('File:')       # 輸入文件名
try:
    fr = open(filename, 'rb')       # 二進制打開文件
except FileExistsError as e:
    print(e)
else:
    fw = open('/home/xiaohuo/PycharmProjects' + filename.split('/')[-1], 'wb')      # 打開文件
    while True:
        data = fr.read(1024)        # 讀取文件
        if not data:
            break
        else:
            fw.write(data)
        fr.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章