網(wǎng)站建設(shè)河北石家莊軟文大全800字
文章目錄
- 1. 文件對象
- 1.1 文件打開方式
- 1.1.1 打開文件
- 1.1.2 關(guān)閉文件
- 1.1.3 訪問模式
- 1.2文件讀取
- 1.2.1 read()
- 1.2.2 readline()
- 1.2.3 readlines()
- 1.3 文件迭代
- 1.4 文件輸入
- 1.4.1 write()
- 1.4.2 writelines()
1. 文件對象
文件讀寫操作:
- 把大象放冰箱里,攏共分幾步?
- 準備字典文件
函數(shù)速查:
常用函數(shù) | 功能 |
---|---|
f = open(‘PATH’) | 打開指定路徑的文件f 是文件對象。 |
f.read() | 從文件對象中讀取文件內(nèi)容 |
f.readline() | 讀取一行內(nèi)容 |
f.readlines() | 返回一個列表,元素是文件的每一行內(nèi)容 |
f.write() | 向文件中寫入內(nèi)容 |
f.writelines() | 以列表的方式向文件中寫入內(nèi)容。 |
f.close() | 關(guān)閉文件 |
time.sleep() | 沉睡響應(yīng)的秒數(shù) |
1.1 文件打開方式
1.1.1 打開文件
使用open() 函數(shù)打開 1.txt 文件,指定只讀模式文件(打開冰箱門)
基本語法:
#打開文件
f = open("1.txt")#查看文件類型
print(type(f))
1.1.2 關(guān)閉文件
#打開文件
f = open('E:\Python Code\\1.txt', 'r')#關(guān)閉文件
f.close()#查看文件是否關(guān)閉
print(f.closed)
1.1.3 訪問模式
訪問模式 | 操作 | 說明 |
---|---|---|
r (read) | 以讀方式打開 | 默認打開文件的方式 文件不存在則報錯。 |
w (write) | 以寫方式打開 | 文件存在則清空,不存在則創(chuàng)建。 |
a (add) | 以追加模式打開 | 不存在則創(chuàng)建。 存在則追加 |
+ | 以讀寫模式打開 | 如r+,w+,a+。 |
b | 以二進制模式打開 | 如rb,wb,ab。 |
常用打開文件的參數(shù):
r
w
a
rb
wb
ab
f = open("./pass.dic", "r")
print(f.closed) #False
f.close()
f = open("./pass.dic", "W")
f.close()
說明:
? open(“./pass.dic”, “r”) :表示已讀的方式打開
? f.closed :表示查看文件是否關(guān)閉
? f.close() :表示關(guān)閉文件
? open(“./pass.dic”, “W”) :表示以寫的方式打開,寫完以后記得關(guān)閉文件。
1.2文件讀取
1.2.1 read()
read() 方法用來讀取文件內(nèi)容。
f = open("E:\Python Code\\1.txt",'r')
data=f.read()
print(data)
read() 方法有點莽,讀取文件中所有內(nèi)容,此方法慎用。
read() 方法比較適合讀取二進制文件,包括exe 程序,圖片等文件,不適合讀取純文本文件。
\n 表示換行(也可以\n\r)
1.2.2 readline()
讀取打開文件的一行(讀取下個行結(jié)束符之前的所有字節(jié)),包括行結(jié)束符,作為字符串返回。它也有一個可選的size 參數(shù),默認為-1,代表讀至行結(jié)束符,如果提供了該參數(shù),那么在超過size 個字節(jié)后會返回不完整的行。
該函數(shù)每執(zhí)行一次,向下讀取一行。
f = open("E:\Python Code\\1.txt",'r')
print(f.readline()) #輸出第一行,此時文件指針指向第二行開頭
print(f.readline())
除去中間的空行,使用strip
函數(shù),默認去除頭尾的空格或者換行符:
f = open("E:\Python Code\\1.txt",'r')
print((f.readline()).strip())
print((f.readline()).strip())
1.2.3 readlines()
readlines() 方法讀取所有(剩余的)行,然后把它們作為一個元素是字符串的列表返回。
f = open("E:\Python Code\\1.txt",'r')
print(f.readlines()) #從頭開始,返回一個字符串列表
print("---------------------") #為了直觀一點
print(f.readline()) #因為文件指針已經(jīng)指向了文件末尾,所以會輸出空
print("---------------------") #為了直觀一點
f.seek(0,0) #此時就需要使用seek函數(shù)來重新設(shè)置文件讀取指針的位置
print(f.readline()) #再次輸出
f.close()
說明:
? seek(0,0) 重新設(shè)置文件讀取指針到開頭
1.3 文件迭代
如果需要逐行處理文件,可以結(jié)合for 循環(huán)迭代(遍歷)文件。迭代文件的方法與處理其他序列類型的數(shù)據(jù)類似。
# 12 - 文件迭代f = open(file = "E:\Python Code\\1.txt", mode = "r")for i in f: # f 也可換成 f.readlines()print(i.strip())f.close()
有可能遇到的問題:
- 在編程時,f.close() 方法容易忘記寫。
- 在處理文件時,有可能會遇到異常,導(dǎo)致整個腳本強制退出,f.close() 不會被執(zhí)行到。
# 13 - 文件迭代的改進方法.pywith open(file = "E:\Python Code\\1.txt", mode = "r") as f:for line in f:print(line.strip())
使用該關(guān)鍵字可以讓python去確定,我們在不需要訪問文件的時候自動關(guān)閉文件。也就是說我們只需要打開和操縱文件,python會在合適的機會關(guān)閉文件。即使在文件打開過程中,遇到異常無法關(guān)閉文件的情況下,也能自動關(guān)閉文件。
1.4 文件輸入
1.4.1 write()
write() 內(nèi)建方法功能與read() 和readline() 相反。它把含有文本數(shù)據(jù)或二進制數(shù)據(jù)塊的字符串寫入到文件中去。寫入文件時,不會自動添加行結(jié)束標志,需要程序員手工輸入。
f = open('E:\Python Code\\1.txt', 'a') #打開文件方式為追加
f.write('g_h_i\n') #追加寫入
f.close() #關(guān)閉f = open('E:\Python Code\\1.txt', 'a')
f.write("zhangsan\n")
f.close()f = open('E:\Python Code\\1.txt', 'r') #打開文件方式為讀取
print(f.readlines()) #以文件列表的形式輸出
f.close()
1.4.2 writelines()
和readlines() 一樣,writelines() 方法是針對列表的操作,它接受一個字符串列表作為參數(shù),將它們寫入文件,行結(jié)束符并不會被自動加入,所以如果需要的話,必須在調(diào)用writelines() 前給每行結(jié)尾加上行結(jié)束符。
>>> password_list=
['venustech\n', 'nsfocus\n', 'topsec\n', 'dbappsecrutiy\n', 'knownsec\n', 'colasoft\n', 'sangfor\n', 'qianxin\n', 'chaitin\n', 'sbr-info\n']
>>> f = open('sec.dic', 'a')
>>> f.writelines(password_list)
>>> f.close()
adlines()) #以文件列表的形式輸出
f.close()