1. 程式人生 > 實用技巧 >python基礎--檔案操作

python基礎--檔案操作

1、檔案的作用
  儲存資料,讀寫檔案是最常見的 I/O 操作

2、開啟和關閉檔案

# 步驟:
# 1)開啟檔案,獲取檔案描述符
# 2)操作檔案描述符-->讀/寫
# 3)關閉檔案close()-->檔案讀寫完成後應該及時關閉:1、佔用資源;2、資料丟失
f = open('test.txt', 'rw+')    # 開啟檔案
print(f.read())
f.close()    # 關閉檔案

3、檔案開啟模式的區別
  1)檔案、文字模式和二進位制模式
    Windows換行: \r\n
    Linux換行: \n
    mac換行: \r
    檔案:檔案本質上都是以二進位制的模式儲存在磁碟上的,用不同編譯器開啟會有編譯的問題。


    文字模式:檔案用文字模式操作,會進行換行符的轉換。不同作業系統之間文字模式的不同,本質上就是因為換行符的不同
    二進位制模式:檔案用二進位制模式操作,不會進行換行符的轉換

  2)open函式

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  引數說明(主要關注file和mode):

  • file引數:表示檔案的路徑,可以是絕對路徑也可以是相對路
  • modle引數:
modle 說明
r read
w write 覆蓋原資料,檔案不存在則新建
a append 追加,檔案不存在則新建
r+ 在r的基礎上增加了可寫功能,首位開始更新檔案內容
w+ 在w的基礎上增加了可讀功能,會將檔案內容清空
a+ 在a的基礎上增加了可讀功能,內容只能加在檔案末尾
rb read binary
wb write binary
ab append binary
  • abuffering 表示緩衝區的策略選擇
  • encoding 指名檔案的編碼,僅適用於文字檔案
  • errors   指明編碼和解碼錯誤時怎麼樣處理,不能在二進位制模式下使用
    • 1)當指明為’strict’時,編碼出錯則丟擲異常ValueError。
    • 2)當指明為’ignore’時,忽略錯誤。
    • 3)當指明為’replace’時,使用某字元進行替代模式,比如使用’?’來替換出錯的字元。
    • 4)其它相應還有surrogateescape/xmlcharrefreplacs/backslashreplace。
  • newline 控制文字模式下一行的結束字元。可以是None,’’,\n,\r,\r\n等
  • closefd 用來給一個檔案控制代碼傳進來,當退出檔案使用時,不對檔案控制代碼進行關閉。如果傳遞一個檔名進來,這個引數無效,必定為True方式。
  • opener 用來實現自己定義開啟檔案方式,較複雜

4、如何在程式中進行檔案讀寫

# 1)讀寫操作
f = open('test.txt', 'rw')
# 檔案寫操作
f.write('第一次寫資料!')
# 檔案讀操作    read(num)    num,檔案字數
print(f.read())
f.close()

# 2)寫函式    write() writelines()
f = open('test.txt', 'w')
# write() 一次寫入一行資料
f.write('第一次寫資料!')
# writelines() 一次寫入多行資料,列表元素中一個元素代表一行
lines = ['a\n', 'b\n', 'c\n'] f.writelines(lines) f.close() # 3)讀函式 read(num) readline() readlines() f = open('test.txt', 'r') # read(num) num,檔案字數,為空則讀取檔案所有資料 print(f.read(5)) # readline() 依次讀取一行資料 print(f.readline()) # 讀取第一行 print(f.readline()) # 讀取第二行 print(f.readlines()) # 一次讀取所有行,返回列表
# 小練習:讀取檔案並去除空格,輸出在螢幕
for line in f.readlines():   if line[-1] == '\n':     print(line[:-1])   else:     print(line) f.close()

5、with語句(語法糖),執行檔案後自動關閉檔案。

with open('test.txt', 'w') as f:
    f.write('我使用with後重新覆蓋範本內容,並賦值給f!!!')
with open('test.txt', 'a') as f:
    f.write('\n我再多說一句,我現在不需要再使用close()去儲存檔案了,直接使用with語句就可以了!')
with open('test.txt', 'r') as f:
    print(f.read())

6、檔案操作

# 1)檔案重新命名
import os
os.rename('a.bk.txt', 'hello.txt')

# 2)檔案刪除
os.remove('hello.txt')

# 3)獲得檔名列表
os.listdir()

# 4)建立和刪除資料夾
os.mkdir('abc')
os.rmdir('abc')