Python–文件操作

  • 2020 年 1 月 19 日
  • 筆記

Python 基礎-文件操作

文件處理流程

1.打開文件,得到文件句柄並賦值給一個變量

2.通過句柄對文件進行操作

3.關閉文件

 r模式,默認模式,文件不存在則報錯

w模式,文件不存在則創建,文件存在則覆蓋

a模式,文件不存在則創建,文件存在則不會覆蓋,寫內容會以追加的方式寫(寫日誌文件的時候常用),追加模式是一種特殊的寫模式

b(rb,wb,ab)模式:不用加encoding:utf-8

基本操作

打開文件

open(path, flag[, encoding][, errors])  path:要打開文件的路徑  flag:打開文件的方式  r   以只讀的方式打開文件,文件的描述符放在文件的開頭  rb  以二進制格式打開一個文件用於只讀,文件的描述符放在文件的開頭  r+  打開一個文件用於讀寫,文件的描述符放在文件的開頭  w   打開一個文件只用於寫入,如果該文件已經存在會覆蓋,如果不存在則創建一個新文件  wb  打開一個文件只用於寫入二進制,如果該文件已經存在會覆蓋,如果不存在則創建一個新文件  w+  打開一個文件用於讀寫,如果該文件已經存在會覆蓋,如果不存在則創建一個新文件  a   打開一個文件用於追加,如果文件存在,文件描述符將會放在文件末尾  a+  encoding:編碼格式  errors:錯誤處理    path = r"C:UsersDesktopfile1.txt"    #ignore  忽略錯誤  f = open(path, "r",encoding="gbk")

打開文件的模式有:

  • r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
  • w,只寫模式【不可讀;不存在則創建;存在則清空內容】
  • x, 只寫模式【不可讀;不存在則創建,存在則報錯】
  • a, 追加模式【可讀;   不存在則創建;存在則只追加內容】

"+" 表示可以同時讀寫某個文件

  • r+, 讀寫【可讀,可寫】
  • w+,寫讀【可讀,可寫】
  • x+ ,寫讀【可讀,可寫】
  • a+, 寫讀【可讀,可寫】

 "b"表示以位元組的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

 註:以b方式打開時,讀取到的內容是位元組類型,寫入時也需要提供位元組類型,不能指定編碼

 讀文件內容

# 1、讀取文件全部內容  str1 = f.read()  print(str1)    # 2、讀取指定字符數  str2 = f.read(10)  print("*"+str2+"*")  str3 = f.read(10)  print("*"+str3+"*")    # 3、讀取整行,包括"n"字符  str4 = f.readline()  print(str4)  str5 = f.readline()  print(str5)    # 4、讀取指定字符數  str6 = f.readline(10)  print(str6)    # 5、讀取所有行並返回列表  list7 = f.readlines()  print(list7)    # 6、若給定的數字大於0,返回實際size位元組的行數  list8 = f.readlines(20)  print(list8)    # 7、修改描述符的位置  f.seek(10)  str9 = f.read()  print(str9)

關閉文件

f.close()

#   一個完整的過程  try:      f1 = open(path,"r", encoding="gbk")      print(f1.read())  finally:      if f1:          f1.close()
with open(path,"r",encoding="gbk") as f2:      print(f2.read())

寫文件

path = r"C:UsersDesktopfile4.txt"  f = open(path,"w")    #   1、將信息寫入緩衝區  f.write("lee is a good man")    #   2、刷新緩衝區  #   直接把內部緩衝區的數據立刻寫入文件,而不是被動的等待自動刷新緩衝區寫入  f.flush()  f.write("lee is a good mann")  f.close()    with open(path,"a") as f:      f.write("good man")
with open('a.txt','w')  as  f:    pass    with open('a.txt','r')  as read_f,open('b.txt','w')  as  write_f:    data=read_f.read()    write_f.write(data)
path = r"C:UsersyanjiDesktopday7test1"  with open(path,"wb") as f3:      str = "lee is a good man"      f3.write(str.encode("utf-8"))  with open(path,"rb") as f2:      data = f2.read()      print(data)      print(type(data))      newDate = data.decode("utf-8")      print(newDate)      print(type(newDate))