目錄小知識
檔案模式操作r
以讀方式開啟(預設)
ru 或者 u
以讀方式開啟,同時提供通用換行符支援
w以寫方式開啟,必要時清空
a以追加模式開啟,從eof開始,必要時建立新的檔案
r+以讀寫方式開啟
w+以讀寫模式開啟
a+以讀寫模式開啟
rb以二進位制讀模式開啟
wb以二進位制寫模式開啟
ab以二進位制追加模式開啟
rb+以二進位制讀寫模式開啟
wb+以二進位制讀寫模式開啟
ab+以二進位制讀寫模式開啟
檔案物件方法
操作file.close()
關閉檔案
file.fileno()
檔案描述符
file.flush()
重新整理檔案的內部緩衝區
file.isatty()
判斷file是否是乙個類tty裝置
file.next()
返回檔案的下一行類似於file.readline()
file.read()
從檔案讀取size個位元組,當未給定或給定負值的時候,讀取剩餘的所有位元組,飯後作為字串返回
file.readinto(buf,size)
讀取size個位元組到檔案緩衝器中
file.readline(size)
從檔案中讀取並返回一行(包括行結束符),或返回最大size個字元
file.readlines(sizhint=0)
讀取檔案的所有行並作為乙個列表返回(包含所有行的結束符);如果給定了sizhint且大於0,那麼將返回總和大約為sizhit位元組的行(大小由緩衝器容量的下乙個值決定)(比如說緩衝器的大小只能為4k的倍數,如果sizhint的值為15k則返回的可能是16k)
file.seek(off,whence=0)
在檔案中移動檔案指標,從whence(0代表檔案開始,1代表當前位置,2代表檔案末尾)偏移off位元組
file.tell()
返回當前檔案中的位置
file.truncate(size=file.tell())
擷取檔案到最大size位元組,預設為當前檔案位置
file.write()
向檔案寫入字串
file.writelines()
向檔案寫入字串序列seq
檔案物件屬性
操作file.closed
表示檔案已經被關閉,否則為false
file.encoding
檔案編碼
file.mode
開啟模式
file.name
檔名file.newlines
表示檔案所採用的分隔符
file.softspace
為0表示在輸出一資料後,要再加上乙個空格符,為1表示不加,這個屬性一般用不到
檔案操作:開啟-操作-關閉
「+」表示可以同時讀寫某個檔案
「u」表示讀取時,\r,\n,\r\n自動換成\n
"""春宮曲.txt
春宮曲唐代:王昌齡
昨夜風開露井桃,未央前殿月輪高。
平陽歌舞新承寵,簾外春寒賜錦袍。
"""f = open("春宮曲.txt", encoding="utf-8") # 檔案控制代碼
print(f.read()) # 讀取全部內容
f.close()
"""報錯:
unicodedecodeerror: 'gbk' codec can't decode byte 0xae in position 4:
illegal multibyte sequence
設定:encoding="utf-8"
"""
f = open("春宮曲.txt", "w", encoding="utf-8") # 指定編碼
poetry = """春宮曲
唐代:王昌齡
昨夜風開露井桃,未央前殿月輪高。
平陽歌舞新承寵,簾外春寒賜錦袍。
"""f.write(poetry) # 寫入
f.close()
f = open("春宮曲.txt", "a", encoding="utf-8")
f.write("好詩好詩!") # 在檔案末尾追加寫入
f.close()
f = open("春宮曲.txt", "r+", encoding="utf-8")
# 只適合讀取小檔案,會轉為列表(low loop,不推薦)
for index, line in enumerate(f.readlines()):
if index == 1: # 不列印檔案第二行
print("我是分割線".center(30, "*"))
continue
print(line.strip()) # 去除兩側空格和換行
f.write("寫入內容,不會報錯!")
f.close()
f = open("春宮曲.txt", "r+", encoding="utf-8")
# high biger,推薦
count = 0 # 計數器
for line in f: # f是乙個迭代器
count += 1
if count == 2: # 如果是第二行
print("--------")
continue
print(line.strip())
f.close()
f = open("春宮曲.txt", "r+", encoding="utf-8")
print(f.tell()) # 檔案指標位置 ->0
print(f.readline()) # ->春宮曲
print(f.tell()) # ->11
f.seek(0) # 將檔案指標移到檔案首
print(f.tell()) # ->0
print(f.readline()) # ->春宮曲
print(f.fileno()) # 檔案的描述符 ->3
print(f.mode) # 開啟模式 ->r+
print(f.closed) # 是否關閉 ->false
print(f.encoding) # 檔案編碼 ->utf-8
print(f.buffer) # -><_io.bufferedrandom name='春宮曲.txt'>
print(type(f.newlines),f.newlines.encode("utf-8")) # 檔案換行符
# ->b'\r\n'
print(f.isatty()) # 檢測檔案是否連線到乙個終端裝置 ->false
f.truncate(10) # 截斷
f.flush() # 將快取內容刷入硬碟
# f.write("在增加點內容吧")
f.close()
windows命令列下,切換碟符f = open("春宮曲.txt", "rb+") # 二進位制讀寫的時候,不能指定編碼
print(f.read()) # ->b'\xe6\x98\xa5\xe5\xae\xab\xe6\x9b\xb2\r'
f.write("我愛北京天安門".encode("utf-8")) # 字串轉為位元組再寫入
f.close()
c:\>d:
Python全棧之路基礎
2.x的預設編碼是assic,預設不支援中文。而3.x的預設編碼是unicode,預設支援中文 3.x不相容2.x,新特性只在3.x上有 3.x的核心語法更加簡單易學 變數的命名規則 要具有描述性 變數名只能 數字,字母組成,不可以是空格或特殊字元 不能以中文為變數名 不能以數字開頭 不能被使用保留...
Python全棧之路Day17
初次編輯2017年10月13日,星期五 摘要一.檔案基本操作 二.檔案操作練習 作業今日總結 引用 py西遊攻關之基礎資料型別 檔案操作流程 開啟檔案 open 讀操作for line in f.readlines 會把檔案所有都放進記憶體中 for line in f 其中f為可迭代物件,不會把所...
Python全棧之路Day12
初次編輯2017年9月29日 9 15 21 摘要一.字元編碼 二.資料型別 三.流程控制 作業今日總結 引用 alex 字元編碼 字串 列表的增刪改查 for while迴圈 ascii碼 unicode str int 整形 long 長整型 list dict set float 浮點型 多行...