open函式
open函式用來以不同的模式開啟檔案
我們來看一下這個函式的引數
open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true):
其中比較重要的是file-檔名,mode-開啟方式,encoding-解碼方式
這裡簡單講一部分這些模式是如何選擇的
模式功能
r唯讀模式,只能讀取
w可寫模式,如果檔案不存在則會建立乙個新的檔案,注意這裡的寫是指覆蓋
a追加模式,如果檔案不存在則會建立乙個新的檔案,注意這裡的寫入是指覆蓋
唯讀模式
唯讀模式要求必須要現有乙個檔案
所以要先建立好乙個檔案,我這裡將其命名為test1.txt
line 1
line 2
第三行第四行
上面是檔案裡的內容
f = open('test1.txt','r',encoding='utf8')
print(f.readable())
print(f.readline(),end='')
print(f.tell())
f.seek(0,0)
print(f.read())
print(f.tell())
f.seek(0,0)
print(f.readlines())
f.seek(8,0)
print(f.tell())
print(f.readlines(6))
true
line 1
8line 1
line 2
第三行第四行
36['line 1\n', 'line 2\n', '第三行\n', '第四行']
8['line 2\n']
下面來把這些函式一一講解
(1).f.readable,檢視當前的檔案是否可讀,可讀則返回true
f = open('test1.txt','r',encoding='utf8')
print(f.readable())
true
(2).f.readline()
f = open('test1.txt','r',encoding='utf8')
print(f.readline(),end='')
line 1
列印一行資料
(3).f.readlines()
f = open('test1.txt','r',encoding='utf8')
print(f.readlines())
f.seek(0,0)
print(f.readlines(6))
['line 1\n', 'line 2\n', '第三行\n', '第四行']
['line 2\n']
這是以列表形式返回全部行的函式,它可以是有引數的,它的引數超過當前行的長度就會多一行,現在是一行,因為當前行的長度為6(字母,空格為1),所以超過6就會多返回一行
f = open('test1.txt','r',encoding='utf8')
print(f.readlines(6))
f.seek(0,0)
print(f.readlines(9))
['line 1\n']
['line 1\n', 'line 2\n']
(4).tell,seek
檔案的讀取是有指標的,這條語句讀到**下一條語句從之前指標指向的位置開始讀。
f = open('test1.txt','r',encoding='utf8')
print(f.readline(),end='')
print(f.tell())
print(f.readline(),end='')
print(f.tell())
print(f.readline(),end='')
print(f.tell())
print(f.readline(),end='')
print(f.tell())
而tell可以看到檔案指標的數值
line 1
8line 2
16第三行
27第四行36
由此我們可以看出看來字母,數字,空格佔乙個,換行符佔兩個,漢字佔三個
而且還要注意,檔案指標是計算換行符的,而當用readlines時是不計算換行符的
而這個檔案指標的位置只可調的
print(f.tell())
f.seek(6,0)
print(f.tell())
f.seek(0,2)
print(f.tell())
f.seek(12,0)
print(f.tell())
f.seek(0,1)
print(f.tell())
0636
1212
這個函式有兩個引數第乙個是偏移量,第二個是模式選擇
一共有三種模式分別是:『0』從檔案頭開始,『1』從指標當前位置開始
『2』從檔案尾開始
可寫模式
開啟檔案時,如果檔案不存在則會建立乙個新的檔案,
還要注意這裡的寫是指覆蓋,所以應用時要小心不要把以前的資料清除
f = open('test2.txt','w',encoding='utf8')
f.write('hello!!')
在檔案執行之前是沒有test2檔案的
在檔案執行後自動建立了test2.txt
hello!!
這是檔案裡面的內容
f.write('注意這裡的寫入是覆蓋')
在修改**後,我們可以看到test2.txt中的內容已經被覆蓋了
追加模式
f = open('test2.txt','a',encoding='utf8')
f.write('注意這裡的寫入是追加')
這就是追加模式了
json檔案的寫入與讀取
想要向檔案寫入或讀取檔案直接使用json模組中的函式就可以了
import json
da =
f = open("text.json","w")
json.dump(da,f)
成功轉成裡json資料
接下來我們讀取之前寫完的json檔案
import json
f = open("text.json","r")
print(json.load(f))
.dump(da,f)
[外鏈轉存中...(img-9pah3cf8-1602425703685)]
成功轉成裡json資料
接下來我們讀取之前寫完的json檔案
import json
f = open(「text.json」,「r」)
print(json.load(f))
成功以字典形式返回
python 16 檔案操作 輸入輸出
檔案操作分為三步 找到檔案 操作關閉按照編碼方式進行檔案的分類 使用方便 占用記憶體小 但是讀取速度慢 不允許跳躍讀取 二進位制檔案 把檔案儲存放在記憶體檔案中進行操作 分類 程式檔案 資料檔案 輸入檔案 輸出檔案文字檔案的操作 又叫ascci檔案 但是預設是編碼uncode編碼 開啟檔案 open...
16,檔案讀寫,關閉流,with as ,
做一點小改動,因為我們目前先不考慮字符集 open file,mode r buffering 1,encoding none,errors none,newline none,closefd true,opener none 開啟檔案 file open e 94 python練習 aa.txt ...
Python 4 檔案讀寫
宣告 open 路徑 模式 encoding 編碼 errors 路徑 檔案的絕對路徑或者相對路徑 要注意特殊字元的轉義 c path data.txt r c path data.txt 字串前加r,表示忽略轉義字元,模式 r 讀 w 清空寫 rw 讀寫 a 追加文字 模式 b,即為以二進位制的方...