一、操作方式
1)讀
注意:光標會以文本開始讀取
1、以文本讀取讀
1、絕對路徑讀取
f = open('/home/pyrookie/temp.txt',mode='r',encoding='utf-8')
content = f.read()
print(content)
f.close()
2、相對路徑讀取
f2 = open('temp.py',mode='r',encoding='utf-8')
content = f2.read()
print(content)
f2.close()
2、以二進制讀取
二進制形式 一般在打開圖片,視頻等文件時使用 上傳下載文件時使用
# 將文件以urt-8打開 但是字符串以uncode編碼的
# 所以再內部有一次轉換爲str
f2 = open('temp.py',mode='rb') #二進制不寫編碼格式
content = f2.read()
print(content)
f2.close()
3、讀+ (讀寫)
先讀取文件中的內容,再追加
f = open('log',mode='r+',encoding='utf-8')
print(f.read())
f.write('我是pyrookie')
f.close()
4、讀+ (寫讀)
注意,寫會先覆蓋掉文件中的內容,讀取的是覆蓋之後的內容
f = open('log',mode='r+',encoding='utf-8')
f.write('aaa')
print(f.read())
f.close()
## 2)寫
### 1、以文本讀寫入
**對於寫,沒有此文件就會創建文件**
**有文件,先將文件清除,再寫入**
```python
f2 = open('text',mode='w',encoding='utf-8')
f2.write('寫入的內容')
f2.close()
<div class="se-preview-section-delimiter"></div>
2、以二進制寫入
wb寫入的時候用什麼編碼寫入就用什麼打開
f2 = open('log',mode='wb')
f2.write('寫入的內容'.encode('utf-8'))
f2.close()
<div class="se-preview-section-delimiter"></div>
3、讀+
沒什麼用 只是讀取不報錯
f = open('log',mode='w+',encoding='utf-8')
f.write('後面加入的內容')
print(f.read())
f.close()
<div class="se-preview-section-delimiter"></div>
3)追加
1、以文本讀取讀
f = open('log',mode='a',encoding='utf-8')
f.write('追加的內容')
f.close()
<div class="se-preview-section-delimiter"></div>
2、以二進制讀取
f = open('log',mode='ab')
f.write('追加的內容'.encode('utf-8'))
f.close()
<div class="se-preview-section-delimiter"></div>
<div class="se-preview-section-delimiter"></div>
## 4)讀寫
<div class="se-preview-section-delimiter"></div>
### 1、以文本讀取讀
<div class="se-preview-section-delimiter"></div>
### 2、以二進制讀取
<div class="se-preview-section-delimiter"></div>
### 3、讀+
<div class="se-preview-section-delimiter"></div>
## 5)
<div class="se-preview-section-delimiter"></div>
## 6)
<div class="se-preview-section-delimiter"></div>
# 二、功能詳解
<div class="se-preview-section-delimiter"></div>
## 1)f.read(n)
功能:讀取指定字符的文本信息
<div class="se-preview-section-delimiter"></div>
```python
f = open('log',mode='r+',encoding='utf-
content = f.read(3) #只讀三個字符字符字符(你看到的是幾個就是幾個字符)
print(content)
f.close()
aaa
2)f.seek(n)
功能:將光標移動到制定的字節位置
f = open('log',mode='r+',encoding='utf-8')
f.seek(3)
# 英文 一個字母按照一個字節 一個漢字按照三個字節)(utf-8)
content = f.read(3)
print(content)
f.close()
3)f.tell()
功能:讀取光標目前的位置
f = open('log',mode='r+',encoding='utf-8')
f.write('nihaoya你是不')
count = f.tell() # 讀取光標位置
f.seek(count-6) # 調整光標位置(注意這以字節移動)
print(f.read())
是不12345 # 讀取的內容是從寫入後往前移動6個字符讀取
4) f.readline()
功能:一行一行的讀取
f = open('log',mode='r+',encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
12345
12345
12345
5)f.readlines()
功能:每一行當成列表中的一個元素,添加到列表中
f = open('log',mode='r+',encoding='utf-8')
line = f.readlines()
print(line)
['12345\n', '12345\n', '12345\n']
可以用 str.strip() 去除字符串兩邊的空字符串
6)其他方法
1、f.readable()
功能:文件是否可讀
f = open('log',mode='r+',encoding='utf-8')
print(f.readable())
True
2、f.truncate(n)
功能:從前往後截取幾個字符
f = open('log',mode='r+',encoding='utf-8')
f.truncate(5)
# 文件中會只剩下5個字節 字節 字節
三、文件操作的幾個注意事項
1)讀取文件
注意讀取文件時要注意不要直接讀取文件的全部內容
可以使用 f.readline() 讀取文件的一行或者使用f.read(n)讀取文件的幾個字符
2)使用 with open()as
可以使用 with open 一次打開多個文件。
with open('log',mode='r+',encoding='utf-8') as obj, open('ni',mode='w+',encoding='utf-8') as f:
print(obj.read())
3)字符串編碼注意事項
1、中文的編碼與解碼
# str --->byte encode 編碼
s = '皮皮江'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解碼
s1 = b.decode('utf-8')
print(s1)
b'\xe7\x9a\xae\xe7\x9a\xae\xe6\xb1\x9f'
皮皮江
2、英文編碼與解碼
s = 'pyrookie'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解碼
s1 = b.decode('gbk')
print(s1)
b'pyrookie'
pyrookie
2)使用 with open()as
with open() as :
默認是讀取,編碼方式爲unicode
windos的文件默認都是 gbk 編碼方式
可以使用 with open 一次打開多個文件。
四、文件操作
1)刪除文件
import os
os.remove('文件路徑/文件名')
2)重命名文件
import os
os.remove('ord文件路徑/文件名','new文件路徑/文件名')