Python程式設計基礎9

2020-08-09 00:33:02

檔案與檔案系統

開啓檔案

open(file, mode=‘r’, buffering=None, encoding=None,
errors=None, newline=None, closefd=True) Open file and return a stream. Raise OSError upon failure.

file: 必需,檔案路徑(相對或者絕對路徑)。
mode: 可選,檔案開啓模式
buffering: 設定緩衝
encoding: 一般使用utf8
errors: 報錯級別
newline: 區分換行符

常見的mode如下表:

開啓模式 執行操作
‘r’ 以只讀方式開啓檔案。檔案的指針將會放在檔案的開頭。這是預設模式。
‘w’ 開啓一個檔案只用於寫入。如果該檔案已存在則開啓檔案,並從開頭始編輯。即原有內容會被刪除。如果該檔案不存在,建立新檔案。
‘x’ 寫模式,新建一個檔案,如果該檔案已存在則會報錯。
‘a’ 追加模式,開啓一個檔案用於追加。如果該檔案已存在,檔案指針將放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
‘b’ 以二進制模式開啓檔案。一般用於非文字檔案,如:圖片。
‘t’ 以文字模式開啓(預設)。一般用於文字檔案,如:txt。
‘+’ 可讀寫模式(可新增到其它模式中使用)

開啓一個檔案,並返迴檔案物件,如果該檔案無法被開啓,會拋出OSError。

f = open('將進酒.txt')
print(f)
# <_io.TextIOWrapper name='將進酒.txt' mode='r' encoding='cp936'>

for each in f:
    print(each)

# 君不見,黃河之水天上來,奔流到海不復回。
# 君不見,高堂明鏡悲白髮,朝如青絲暮成雪。
# 人生得意须盡歡,莫使金樽空對月。
# 天生我材必有用,千金散盡還復來。
# 烹羊宰牛且爲樂,會須一飲三百杯。
# 岑夫子 伕子,丹丘生,將進酒,杯莫停。
# 與君歌一曲,請君爲我傾耳聽。
# 鐘鼓饌玉不足貴,但願長醉不復醒。
# 古來聖賢皆寂寞,惟有飲者留其名。
# 陳王昔時宴平樂,鬥酒十千恣歡謔。
# 主人何爲言少錢,徑须沽取對君酌。
# 五花馬,千金裘,呼兒將出換美酒,與爾同銷萬古愁。

檔案物件方法

  • fileObject.close() 用於關閉一個已開啓的檔案。關閉後的檔案不能再進行讀寫操作, 否則會觸發ValueError錯誤。
f = open("將進酒.txt")
print('FileName:', f.name)  # FileName: 將進酒.txt
f.close()
  • fileObject.read([size]) 用於從檔案讀取指定的字元數,如果未給定或爲負則讀取所有。
f = open('將進酒.txt', 'r')
line = f.read(20)
print("讀取的字串: %s" % line)
# 讀取的字串: 君不見,黃河之水天上來,奔流到海不復回。

f.close()
  • fileObject.readline()讀取整行,包括 「\n」 字元。
f = open('將進酒.txt', 'r')
line = f.readline()
print("讀取的字串: %s" % line)
# 讀取的字串: 君不見,黃河之水天上來,奔流到海不復回。
f.close()

Python strip() 方法用於移除字串頭尾指定的字元(預設爲空格或換行符)或字元序列。

  • fileObject.readlines()用於讀取所有行(直到結束符 EOF)並返回列表,該列表可以由 Python 的 for… in … 結構進行處理。
f = open('將進酒.txt', 'r')
lines = f.readlines()
print(lines)

for each in lines:
    each.strip()
    print(each)

# 君不見,黃河之水天上來,奔流到海不復回。
# 君不見,高堂明鏡悲白髮,朝如青絲暮成雪。
# 人生得意须盡歡,莫使金樽空對月。
# 天生我材必有用,千金散盡還復來。
# 烹羊宰牛且爲樂,會須一飲三百杯。
# 岑夫子 伕子,丹丘生,將進酒,杯莫停。
# 與君歌一曲,請君爲我傾耳聽。
# 鐘鼓饌玉不足貴,但願長醉不復醒。
# 古來聖賢皆寂寞,惟有飲者留其名。
# 陳王昔時宴平樂,鬥酒十千恣歡謔。
# 主人何爲言少錢,徑须沽取對君酌。
# 五花馬,千金裘,呼兒將出換美酒,與爾同銷萬古愁。

f.close()
  • fileObject.seek(offset[, whence])用於移動檔案讀取指針到指定位置。

offset:開始的偏移量,也就是代表需要移動偏移的位元組數,如果是負數表示從倒數第幾位開始。
whence:可選,預設值爲 0。給 offset 定義一個參數,表示要從哪個位置開始偏移;0 代表從檔案開頭開始算起,1 代表從當前位置開始算起,2 代表從檔案末尾算起。

f = open('將進酒.txt', 'r')
line = f.readline()
print(line)
# 君不見,黃河之水天上來,奔流到海不復回。
line = f.readline()
print(line)
# 君不見,高堂明鏡悲白髮,朝如青絲暮成雪。
f.seek(0, 0)
line = f.readline()
print(line)
# 君不見,黃河之水天上來,奔流到海不復回。
f.close()

OS 模組中關於檔案/目錄常用的函數

  • os.getcwd()用於返回當前工作目錄
  • os.chdir(path)用於改變當前工作目錄到指定的路徑。
import os

path = 'C:\\'
print("當前工作目錄 : %s" % os.getcwd())
# 當前工作目錄 : C:\Users\Administrator\PycharmProjects\untitled1
os.chdir(path)
print("目錄修改成功 : %s" % os.getcwd())
# 目錄修改成功 : C:\