文件處理_月隱學python第21課

目錄

⼀、⽂件處理

1 ⽂件讀取

2 寫⽂件

3 移動⽂件指針

⼆、 os模塊

1. os模塊

2. os基本⽅法


 

⼀、⽂件處理

⽂件的處理包括讀⽂件和寫⽂件,讀寫⽂件就是請求操作系統打開⼀個⽂件對象,然後,通過操作系統提供的接⼝從這個⽂件對象中讀取數據(讀⽂件),或者把數據寫⼊這個⽂件對象(寫⽂件)。

1 ⽂件讀取

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

  • 打開⽂件
  • 讀取⽂件內容
  • 關閉⽂件

打開⽂件要使⽤open內建函數:
open(file [, mode='r', encoding=None, errors=None])
參數說明:

  • file:⽂件路徑,可以是相對路徑和絕對路徑
  • mode:⽂件打開模式
  • encodeing: ⽂件編碼⽅式,不⽤於⼆進制⽂件,⼀般是utf-8,gbk
  • errors:指定如何處理編碼和解碼錯誤 ,適⽤於⽂本⽂件
  • 返回值:⼀個可迭代的⽂件對象
     

注意:⼆進制⽂件⼀般⽤於視頻、⾳頻、圖⽚
讀取⽂件常⽤函數:

# 打開文件
fp = open('qfile.txt','r',encoding='utf-8')
# 讀取文件全部內容
# content = fp.read()
# print(content)

#讀取指定字符數,包括行尾的換行符\n
# print(fp.read(5))

# 讀取一行
# print(fp.readline(6)) #讀取指定字符數
# 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
        # print(line) 

2 寫⽂件


'''
寫文件
'''
path = 'file11.txt'

# 1.打開文件
f = open(path,'w',encoding='utf-8')
'''
2.寫⼊內容,將內容寫⼊到緩衝區
不會⾃動換⾏,需要換⾏的話,需要在字符串末尾添加換⾏符
'''
f.write('Whatever is worth doing is worth doing well該⾏很驕傲很關鍵\n')
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:
    f1.write('Whatever is worth doing is worth doing well')

3 移動⽂件指針

⽂件是順序向後讀寫的,如果想要移動⽂件指針,可以使⽤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('file11.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模塊

1. os模塊

需要引⼊os模塊

import os


2. os基本⽅法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章