# Python文件的基本操作 - 文件的基本操作 - 文件的讀寫模式 - 文件的讀寫操作相關的方法 - 文件的操作模式 - 文件的練習題 ## 文件的基本操作 ```python 1. 我們能夠操作哪些類型的文件: .txt 沒有尾碼名的文件 # 我們現在不能操作word、Excel、PPT等文件 ...
Python文件的基本操作
- 文件的基本操作
- 文件的讀寫模式
- 文件的讀寫操作相關的方法
- 文件的操作模式
- 文件的練習題
文件的基本操作
1. 我們能夠操作哪些類型的文件:
.txt 沒有尾碼名的文件
# 我們現在不能操作word、Excel、PPT等文件暫時不能夠操作
numpy、pandas等模塊可以操作
2. 如何操作文件
"""
三步法:
1. 打開文件(open)
2. 讀或者寫
3. 關閉文件
"""
# open('要操作的文件路徑', '讀寫模式', '字元編碼')
文件的路徑:
相對路徑
絕對路徑
'D:\Python27\day10\a.txt'
# 當路徑中出現了字母和斜杠的組合會產生一些特殊的含義,所以我們應該給去掉:
r'D:\Python27\day10\a.txt'
f= open(r'D:\Python27\day10\a.txt', 'r', encoding='utf-8') # \n \t
# 返回的是文件句柄
print(f) # <_io.TextIOWrapper name='D:\\Python27\\day10\\a.txt' mode='r' encoding='utf-8'>
# 2. 讀取文件
# helloworld
print(f.read()) # 類似於是文件的內置方法
# 3. 關閉文件
f.close()
'''第二種方式來操作文件'''
# with上下文管理器打開文件!
# as:起別名
# 它的特點就在於:能夠自動關閉文件
with open('a.txt', 'r', encoding='utf-8') as f: # f=open('a.txt', 'r', encoding='utf-8') f.close()
print(f.read())
讀寫操作相關的方法
r(預設的):只讀
w:只寫
a:只追加寫
r模式的使用
1. 只讀模式
# 1. 讀模式
"""當文件路徑不存在的時候,會直接保存"""
# f = open('b.txt', 'r', encoding='utf-8') # No such file or directory: 'b.txt'
# f = open('a.txt', 'r', encoding='utf-8') # No such file or directory: 'b.txt'
# print(f.read())
# f.close()
#
# with open('a.txt', 'r', encoding='utf-8') as f:
# print(f.read())
w模式的使用
# w只寫模式: 在文件不存在時會創建空文檔,文件存在會清空文件,文件指針跑到文件開頭
with open('b.txt',mode='w',encoding='utf-8') as f:
f.write('你好\n')
f.write('我好\n')
f.write('大家好\n')
f.write('111\n222\n333\n')
#強調:
# 1 在文件不關閉的情況下,連續的寫入,後寫的內容一定跟在前寫內容的後面
# 2 如果重新以w模式打開文件,則會清空文件內容
a模式的使
# a只追加寫模式: 在文件不存在時會創建空文檔,文件存在會將文件指針直接移動到文件末尾
with open('c.txt',mode='a',encoding='utf-8') as f:
f.write('44444\n')
f.write('55555\n')
#強調 w 模式與 a 模式的異同:
# 1 相同點:在打開的文件不關閉的情況下,連續的寫入,新寫的內容總會跟在前寫的內容之後
# 2 不同點:以 a 模式重新打開文件,不會清空原文件內容,會將文件指針直接移動到文件末尾,新寫的內容永遠寫在最後
讀寫操作相關的方法
1. 讀系列
# 讀系列
with open('a.txt', 'r', encoding='utf-8') as f:
# print(f.read()) # read方法是一次性讀取文件中得所有數據
# print(f.readline()) # helloworld1
# print(f.readline()) # readline一次只讀文件的一行內容
# print(f.readlines()) # 一次性讀取文件的所有內容,然後每一個內容作為列表的一個元素返回,返回的數據類型是:列表
print(f.readable()) # able ation un multi ...
2. 寫系列
# 寫系列
### 做後端程式員:最重要的是安全意識
with open('a.txt', 'w', encoding='utf-8') as f:
# f.write('jerry say hello ')
# f.writelines(['hello\n', 'jerry\n', 'kevin\n', 'jason\n'])
print(f.writable())
print(f.readable())
文件的讀操作的優化
with open('a.txt', 'r', encoding='utf-8') as f:
# print(f.read()) # 一次性讀取文件的所有數據,並且游標在文件的末尾,如果在去讀,就讀不到了
# print(f.read())
# 文件句柄f是支持for迴圈的
for line in f:
# line: 就是文件的一行內容
print(line)
# 瞭解的方法:
# f.flush() # 把數據從記憶體中立刻刷到磁碟
"""
當你讀取的數據比較小的時候,其實是在緩衝區的,當數據量夠多的時候,它會一定刷到磁碟
"""
"""
一次性讀取文件的所有數據有什麼問題:
當數據比較多的時候,會出現記憶體溢出,這種情況是堅決不能出現的
如何優化以上操作:
一點一點的讀取數據然後把數據趕緊刷到硬碟里
"""
文件的操作模式
1. 文本模式
t:text
# r w a =====> rt wt at
"""
with open('userinfo.txt', 'r', encoding='utf-8') as f:
文本模式預設就是操作字元串,文本
特征:
1. encoding參數必須指定
2. 讀取的所有的數據都是以字元串為單位的
3. t模式只能夠讀取文本或者字元模式
"""
2. 二進位模式
b模式:binary
with open('userinfo.txt', 'rb') as f:
"""
b模式中得b不能省略------------> rb wb ab
特征:
1. encoding='utf-8'參數不能夠指定
2. 讀取的數據全部以位元組為單位
3. 二進位模式可以讀取任意類型的文件
"""