第二十四天 檔案和目錄

2021-10-03 21:02:21 字數 3922 閱讀 9396

⼆、os模組

⽂件的處理包括讀⽂件和寫⽂件,讀寫⽂件就是請求作業系統開啟⼀個⽂件物件,然後,通過作業系統提供的接⼝從這個⽂件物件中讀取資料(讀⽂件),或者把資料寫⼊這個⽂件物件(寫⽂件)。

⽂件讀取可分為以下步驟:

mode解釋r

唯讀w只寫,寫之前會清空⽂件的內容,如果⽂件不存在,會建立新⽂件

a追加的⽅式,在原本內容中繼續寫,如果⽂件不存在,則會建立新⽂件

r+可讀可寫

w+開啟⼀個⽂件⽤於讀寫。如果該⽂件已存在則將其覆蓋。如果該⽂件不存在,建立新⽂件。

a+開啟⼀個⽂件⽤於讀寫。如果該⽂件已存在,⽂件指標將會放在⽂件的結尾。⽂件開啟時會是追加模式。如果該⽂件不存在,建立新⽂件⽤於讀寫。

brb、wb、ab、rb+、wb+、ab+意義和上⾯⼀樣,⽤於⼆進製⽂件操作

函式解釋

read([size])

讀取⽂件(讀取size字元,預設讀取全部)

readline([size])

讀取⼀⾏,如果指定size,將讀⼊指定的字元數

readlines()

把⽂件內容按⾏全部讀⼊,返回⼀個包含所有⾏的列表

#開啟⽂件

fp =

open

('qfile.txt'

,'r'

,encoding=

'utf-8'

)#讀取⽂件全部內容

#content = fp.read()

#print(content)

#讀取指定字元數,包括⾏尾的換⾏符\n

# print(fp.read(20))

#讀取⼀⾏

# print(fp.readline(5)) #讀取指定字元數

# print(fp.readline()) #讀取⼀整⾏,直到碰到⼀個\n

#讀取所有⾏,返回列表

# print(fp.readlines())

#關閉⽂件

fp.close(

)#由於⽂件讀寫時都有可能產⽣ioerror,⼀旦出錯,後⾯的f.close()就不會調⽤。

# 所以,為了保證⽆論是否出錯都能正確地關閉⽂件,我們可以使⽤try ...

finally來實現:

# try:

# fp = open('qfile.txt','r',encoding='utf-8')

# print(fp.readlines())

# finally:

# fp.close()

#可以簡寫為:

#with語句會⾃動調⽤close⽅法關閉⽂件

with

open

('qfile.txt'

,'r'

,encoding=

'utf-8'

)as fp:

print

(fp.readline())

#fread()和freadlines()會⼀次讀⼊⽂件全部內容,如果⽂件太⼤,會直接耗盡記憶體

的,因為⽂件物件可迭代,所以可以⽤for迴圈遍歷⽂件讀取

with

open

('qfile.txt'

,'r'

,encoding=

'utf-8'

)as fp:

for line in fp:

print

(line.strip())

#注意⽆論是read、readline、readlines都會

讀⼊⾏末的\n,所以需要⼿動剔除\n

path =

"file11.txt"

#1.開啟⽂件

f =open

(path,

"w",encoding=

"utf-8"

)#2.寫⼊內容,將內容寫⼊到緩衝區

#不會⾃動換⾏,需要換⾏的話,需要在字串末尾新增換⾏符

f.write("whatever is worth doing is worth doing well該⾏很驕傲很關鍵

\n")

#3.重新整理緩衝區【加速資料的流動,保證緩衝區的流暢】

f.flush(

)#4.關閉⽂件 關閉⽂件也會重新整理緩衝區

f.close(

)#簡寫⽅式:可以不⽤⼿動調⽤close

with

open

(path,

"w",encoding=

"utf-8"

)as f1:

f.write("whatever is worth doing is worth doing well該⾏很驕傲很關

鍵")

⽂件是順序向後讀寫的,如果想要移動⽂件指標,可以使⽤seek⽅法:

file_obj.seek(offset,whence=0)

功能:移動⽂件指標

引數:offset 是偏移量,正數表示從⽂件開頭向⽂件末尾移動,負數相反。

whence : ⽂件指標的位置,可選引數,值可以是

seek_set or 0 表示⽂件開頭位置,是預設值

seek_cur or 1 表示當前位置(不能使⽤)

seek_end or 2 ⽂件末尾位置(不能使⽤)

返回值:⽆

#1.txt內容:hello world

with

open

('1.txt'

,'r'

,encoding=

'utf-8'

)as fp:

fp.seek(5)

#移動到hello後的空格位置

print

(fp.read(3)

)#wo

fp.seek(0)

#移動到開頭

print

(fp.read(5)

)#hello

print

(fp.tell())

#tell()顯示當前指標位置

需要引⼊os模組

函式名函式值

os.name

獲取當前的作業系統的型別nt->windows posix->unix 後者linux

os.environ

獲取作業系統中的環境變數

os.environ.get(「path」)

獲取path的環境變數

os.curdir

獲取當前的⽬錄

os.getcwd()

獲取當前的⼯作⽬錄

os.listdir() **

以列表的形式 返回當前⽬錄的⽂件

os.mkdir()

建立⽬錄

os.rmdir()

刪除⽬錄

os.rename(old,new)

修改⽂件後者⽂件夾的名字

os.remove()

刪除⽂件

os.system(command)

執⾏系統命令

os.walk(path) **

遍歷⽬錄

os.path.join(path1,path2)

將path1和path2拼接成⼀個正常的路徑

os.path.splitext()

獲取⽂件副檔名

os.path.isdir() **

判斷是否是⽬錄

os.path.isfile() **

判斷是否是⽂件

os.path.exists() **

判斷⽂件或者⽬錄是否存在

os.path.getsize() **

獲取⽂件的⼤⼩(位元組)

os.path.dirname()

獲取路徑的⽬錄名

os.path.basename()

獲取路徑的⽂件名

os.path.abspath()

返回⽂件的絕對路徑

os.path.split()

拆分路徑

冥想第二十四天

還有乙個需要提高的地方就是 慢一點,以往自己對成功和只是追求的太急切。一急切就亂了節奏,適當的急切是必要的 放輕鬆全身都是最舒服的狀態。平靜的內心讓自己能面對生活的困難。感謝自己,感謝家人,感謝朋友,感謝一切。不責怪自己,一天比一天進步就好。慢慢來。下午和客戶積極的溝通,全身心的投入,發現一點也不困...

連續總結第二十四天

11.4 康鑫 連續總結第二十四天 今天學習了課本上有關陣列的知識,陣列與指標。1,指標運算包括a,賦值運算 b,算術運算 c,關係運算 d,邏輯運算。2 一維陣列 a 與指標 p 3,二維陣列 b,m行n列 與指標。4,字元陣列 s 與指標 ps 5,指標陣列 完成了課本的例題,通過程式設計實現二...

2017 8 23暑假集訓第二十四天

今天一共a了兩道題 1001.1002 比較簡單的?1001做了一上午 一直在繞一點 當輸入字元m後,要輸入五個數字 用scanf輸入的 但是!卻只寫了四個 d!然後就一直在找bug!找了一上午。我很疑惑,為什麼編譯能過!提交還是莫名其妙的wa!一直在懷疑自己!下午 睡過頭了 來的晚了 1007看了...