1、開啟檔案的方法:
第一種:開啟檔案執行完命令後,需要關閉檔案,否則會一直占用記憶體空間
f=open('/data/1.txt','r+',encoding='utf-8') #後面的r+ 表示開啟檔案的模式是讀寫,encoding='-8'是指定編碼格式,因為用open()函式開啟,open()函式會去找系統的預設編碼,windows的系統一般是gbk編碼格式的,如果沒有指定編碼格式就會報錯,而mac預設編碼就是utf-8,開啟就不會報錯了,這裡的解決辦法是在開啟檔案時,指定編碼格式
f.close #關閉檔案
第二種:這種會自動關閉檔案,不用我們手動關閉;
with open('/data/1.txt','r+',encoding='utf-8') as f:
2、開啟檔案的模式:
r : 唯讀模式,預設如果不加模式就是唯讀模式
r+: 讀寫模式,讀,寫,追加,如果檔案不存在會報錯。
w:只寫模式 ,會覆蓋檔案內容,如果檔案不存在會建立
w+: 寫讀模式 ,會覆蓋檔案內容,如果檔案不存在會建立
a:追加模式 ,如果檔案不存在會建立
a+:和a的意思一樣
3、讀檔案的方法:
(1)read()方法,如果檔案大的話不要用read()這種方法,可能不能全部讀出來,而且比較佔記憶體;
1 f=open("geci.txt
","r+
",encoding='
utf-8')2
print(f.read())#
讀檔案34#
以上執行的結果是
5一杯敬朝陽 一杯敬月光67
喚醒我的嚮往 溫柔了寒窗89
於是可以不回頭地逆風飛翔
1011
不怕心頭有雨 眼底有霜
1213
一杯敬故鄉 一杯敬遠方
1415
守著我的善良 催著我成長
1617
所以南北的路從此不再漫長
1819
靈魂不再無處安放
2021
一杯敬明天 一杯敬過往
2223 支撐我的身體 厚重了肩膀
(2)readline()方法,此方法是只讀取檔案一行的內容;
1 f=open("geci.txt
","r+
",encoding='
utf-8
')#以追加模式開啟檔案
2print(f.readline())#
讀取一行內容34
#以上執行的結果是
5 一杯敬朝陽 一杯敬月光
readline()唯讀了一行,如果要讀全部內容那就用迴圈去一行一行的讀,如下方法:
1 with open('geci.txt
','r
',encoding='
utf-8
') as f:
2while
true:
3 line1=f.readline()
4if len(line1) ==0:
5break
6print
(line1)78
#以上執行的結果是
9一杯敬朝陽 一杯敬月光
1011
喚醒我的嚮往 溫柔了寒窗
1213
於是可以不回頭地逆風飛翔
1415
不怕心頭有雨 眼底有霜
1617
一杯敬故鄉 一杯敬遠方
1819
守著我的善良 催著我成長
2021
所以南北的路從此不再漫長
2223
靈魂不再無處安放
2425
一杯敬明天 一杯敬過往
2627 支撐我的身體 厚重了肩膀
(3)readlines(),此方法是把檔案的每一行放到乙個list裡面
1 f=open("geci.txt
","r+
",encoding='
utf-8
')#以追加模式開啟檔案
2print(f.readlines())#
讀取一行內容34
#以上執行的結果是
5 ['
一杯敬朝陽 一杯敬月光\n
', '
\n', '
喚醒我的嚮往 溫柔了寒窗\n
', '
\n', '
於是可以不回頭地逆風飛翔\n
', '
\n', '
不怕心頭有雨 眼底有霜\n
', '
\n', '
一杯敬故鄉 一杯敬遠方\n
', '
\n', '
守著我的善良 催著我成長\n
', '
\n', '
所以南北的路從此不再漫長\n
', '
\n', '
靈魂不再無處安放\n
', '
\n', '
一杯敬明天 一杯敬過往\n
', '
\n', '
支撐我的身體 厚重了肩膀
']
4、將檔案中的元素轉存為集合;
例如users.txt檔案中的內容為:
xuezhiqian:wwwwwxiehong:hong
qianren:111111
dajun:qqqqqq
yuxinhong:hong
將此檔案轉存為集合的方式:
1 result ={}2 f = open('
users.txt
', '
r+',encoding='
utf-8')
3for line in
f.readlines():
4 line=line.strip()5if
notlen(line):
6continue
7 result[line.split('
:')[0]] = line.split('
:')[1].strip()#
將每次迴圈得到的key和value存到字典中,strip()是去掉換行和空格
8print
(result)910
11執行結果是:
12
5.刪除檔案中的某一行:
1 with open('users.txt
','r
',encoding='
utf-8
')as f1:
2 lines =f1.readlines()
3with open('
users1.txt
','w
',encoding='
utf-8
')as f2:
4
for line in
lines:
5
if username.strip()in
line:
6
(username.strip())
7continue
8
f2.write(line)910
執行之後:生成乙個新的users1.txt的檔案,內容為:
11xuezhiqian:wwwww
12xiehong:hong
13 qianren:111111
14 yuxinhong:hong
6、檔案指標:
1 with open('333.txt
','w
') as f:
2f.write(txt3)
3 with open('
333.txt
','r
') as f:
4print
(f.tell())
5print (f.readline().strip()) #
strip表示去掉換行符和空格
6print
(f.readline().strip())
7print
(f.tell())
8f.seek(0)
9print
(f.readline().strip())
1011
#執行結果:120
13 121212121233
14qwertyu
15 23
16 121212121233
說明:tell() 方法會顯示當前的指標(游標)位置,第一次肯定是0,然後讀了兩行,那指標位置就是在兩行之後,然後用seek(0)方法把指標位置調整到0,seek()方法控制指標的位置。再次讀取一行,還是讀取的第一行,因為指標在哪,就從**開始讀。
Python基礎之檔案操作
python的檔案操作還是比較簡單的基本分為三步 開啟,讀寫,關閉 檔案開啟 f open db r 開啟 f.read 讀 f.close 關閉 為了避免程式設計師忘記最後一步關閉,優雅的python使用了以下語句 with open db r as f,open db2 r as f2 opra...
python基礎之檔案操作
開啟檔案並輸出檔案內容模板 f open flie mode r encoding utf 8 data f.read 返回整個檔案資料 data f.readlines 以列 式,返回整個檔案資料 print data f.close flie檔案路徑 相對路徑或者絕對路徑 mode檔案開啟模式 ...
python基礎之檔案操作
轉義rb 讀位元組 爬蟲 讀取出來的全部是位元組碼 f open test.text rb encoding utf 8 print f.read 報錯!valueerror binary mode doesn t take an encoding argument 因為rb rb 操作時不支援指定...