Python-文件處理


一、文件的操作

1、打開一個文件

語法:

open(filename,mode)

解釋:

filename:代表你要訪問的文件名

mode:這里代表你打開文件的模式,有 只讀,寫入,讀寫,追加等模式;默認為只讀模式。

我們可以看下面的列表:

1、讀模式 r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式

例子:

f = open("foo.txt", "r",encoding="UTF-8")  #只讀的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
i=f.read()   # 讀取文件,bing 賦值給i
print(i)     #打印i
f.close()    #關閉文件夾
#輸出如下:
C:\Python35\python.exe D:/linux/python/all_test/listandtup.py
Python 是一個非常好的語言。
是的,的確非常好!!

2、讀寫模式 r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。

例子:

f = open("foo.txt", "r+",encoding="UTF-8")  #讀寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
i=f.read()   # 讀取文件,bing 賦值給i
print(i)     #打印i
f.write("我要學Python\n")       #寫入
# f.flush()
f.close()    #關閉文件夾
輸出:
C:\Python35\python.exe D:/linux/python/all_test/listandtup.py
我要學Python
我要學Python

3、寫模式 w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件

例子:

f = open("foo.txt", "w",encoding="UTF-8")  #寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
f.write("我要學Python\n")       #寫入,文件夾存在覆蓋,不存在創建
f.close()    #關閉文件夾

4、讀寫模式 w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件

例子:

f = open("foo.txt", "w+",encoding="UTF-8")  #寫的方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
f.write("我要學Python\n")       #寫入,文件夾存在覆蓋,不存在創建
print("定位之前的光標位置:%s" % (f.tell()))
f.flush()                       #刷新文件使內存的內容刷新至文件夾
f.seek(0)                       #因為W+讀取文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取
print("定位之后的光標位置:%s" % (f.tell()))
i = f.read()
print(i)
f.close()    #關閉文件夾
輸出:
C:\Python35\python.exe D:/linux/python/all_test/listandtup.py
定位之前的光標位置:17
定位之后的光標位置:0
我要學Python

5、追加 a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入

例子:

f = open("foo.txt", "a",encoding="UTF-8")  #追加方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
f.write("我要學Python\n")       #寫入,文件夾存在追加,不存在創建
print("定位之前的光標位置:%s" % (f.tell()))
f.seek(0)                       #因為a追加文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取
print("定位之后的光標位置:%s" % (f.tell()))
f.close()    #關閉文件夾

6、追加讀 a+打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。

例子:

f = open("foo.txt", "a+",encoding="UTF-8")  #追加讀方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
f.write("我要學Python\n")       #寫入,文件夾存在創建,不存在創建
print("定位之前的光標位置:%s" % (f.tell()))
f.flush()                       #刷新文件使內存的內容刷新至文件夾
f.seek(0)                       #因為W+讀取文件之后會定位在文件尾部,所以需要重新定位一下光標位置,要不無法讀取
print("定位之后的光標位置:%s" % (f.tell()))
i = f.read()
print(i)
f.close()    #關閉文件夾
輸出:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
定位之前的光標位置:136
定位之后的光標位置:0
我要學Python
我要學Python
我要學Python
我要學Python
我要學Python

二、文件的操作方法

文件的常用方法有13種,如下圖:

文件的file.close、file.flush、file.seek、file.tell在前面文件的讀、寫、追加已經介紹過了這里就不一一說了,下面我們說一下剩余的幾種方法吧!

1、fileno() 方法返回一個整型的文件描述符(file descriptor FD 整型),可用於底層操作系統的 I/O 操作

語法:

fileObject.fileno()

返回值:文件描述符

例子:

f = open("foo.txt", "a+",encoding="UTF-8")  #追加讀方式打開的文件,encoding是轉碼的意思,告訴解釋器,是以UTF-8的格式
fid = f.fileno()
print("文件的描述符為:",fid)
f.close()    #關閉文件夾
輸出:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
文件的描述符為: 3

2、next() 返回文件的下一行

語法:

next(iterator[,default])

例子:
# 打開文件
fo = open("foo.txt", "r",encoding="UTF-8")
print ("文件名為: ", fo.name)
for index in range(5):
    line = next(fo)
    print ("第 %d 行 - %s" % (index, line))
# 關閉文件
fo.close()
#輸出
# C:\Python35\python.exe D:/linux/python/all_test/總練習.py
# 文件名為:  foo.txt
# 第 0 行 - 我要學Python0
# 第 1 行 - 我要學Python1
# 第 2 行 - 我要學Python2
# 第 3 行 - 我要學Python3
# 第 4 行 - 我要學Python4

3、read方法:用於從文件讀取指定的字節數,如果為給定或為負則讀取所有

語法:

fileObject.read()

例子:

fo = open("foo.txt", "r",encoding="UTF-8")
print ("文件名為: ", fo.name)
line = fo.read()       #不指定字符節讀取所有
print(line)
fo.close()    # 關閉文件
# 如下:
# C:\Python35\python.exe D:/linux/python/all_test/總練習.py
# 文件名為:  foo.txt
# 我要學Python0
# 我要學Python1
# 我要學Python2
# 我要學Python3
# 我要學Python4
# 我要學Python5

===========================================
fo = open("foo.txt", "r",encoding="UTF-8")
print ("文件名為: ", fo.name)
line = fo.read(16)       #指定讀取16字節
print(line)
fo.close()    # 關閉文件
#如下:
# C:\Python35\python.exe D:/linux/python/all_test/總練習.py
# 文件名為:  foo.txt
# 我要學Python0
# 我要學Py

4、readline() 方法用於從文件讀取整行,包括 "\n" 字符。如果指定了一個非負數的參數,則返回指定大小的字節數,包括 "\n" 字符。

語法:

fileObject.readline()

例子:

fo = open("foo.txt", "r",encoding="UTF-8")
print ("文件名為: ", fo.name)
line = fo.readline(3)       #指定讀取16字節
print("讀取指定的字符串為:%s" % (line))
print("光標現在的位置:%s" %(fo.tell()))
fo.seek(0,0)          #之所以用這個是因為前面已經讀了16個字符了所以要把光標調到0 的位置
print("調整后光標的位置:%s" %(fo.tell()))
line = fo.readline()       #讀取第一行
print("讀取第一行:%s" % (line))
fo.close()    # 關閉文件
#如下:
# C:\Python35\python.exe D:/linux/python/all_test/總練習.py
# 文件名為:  foo.txt
# 讀取指定的字符串為:我要學
# 光標現在的位置:9
# 調整后光標的位置:0
# 讀取第一行:我要學Python0

5、readlines() 方法用於讀取所有行(直到結束符 EOF)並返回列表,若給定sizeint>0,返回總和大約為sizeint字節的行, 實際讀取值可能比sizhint較大, 因為需要填充緩沖區。如果碰到結束符 EOF 則返回空字符串。

語法:

fileObject.readlines()

例子:

fo = open("foo.txt", "r",encoding="UTF-8")
print ("文件名為: ", fo.name)
line = fo.readlines(3)       #指定讀取3字節
print("讀取指定的字符串為:%s" % (line))
for line in fo.readlines():
    line = line.strip("\n")     #使用strip去掉換行符/n
    print("讀取所有行:%s" % (line))
fo.close()    # 關閉文件
輸出如下:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
文件名為:  foo.txt
讀取指定的字符串為:['我要學Python0\n']
讀取所有行:我要學Python1
讀取所有行:我要學Python2
讀取所有行:我要學Python3
讀取所有行:我要學Python4
讀取所有行:我要學Python5
讀取所有行:我要學Python6
讀取所有行:我要學Python7

6、truncate() 方法用於截斷文件,如果指定了可選參數 size,則表示截斷文件為 size 個字符。 如果沒有指定 size,則重置到當前位置。

語法:

fileObject.truncate( [ size ])
例子:
fo = open("foo.txt", "r+",encoding="UTF-8")
line = fo.readline()
print ("讀取行: %s" % (line))

fo.truncate()
line = fo.readlines()
print ("讀取行: %s" % (line))
fo.close()    # 關閉文件

輸出:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
讀取行: 我要學Python1

讀取行: ['我要學Python2\n', '我要學Python3\n', '我要學Python4']

==========================================
fo = open("foo.txt", "r+",encoding="UTF-8")
fo.truncate(10)            #截取10個字符,其余的清空
line = fo.read()
print ("讀取的數據: %s" % (line))
fo.close()    # 關閉文件

輸出如下:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
讀取的數據: 我要學P

7、writelines() 方法用於向文件中寫入一序列的字符串,這一序列字符串可以是由迭代對象產生的,如一個字符串列表,換行需要制定換行符 \n。

語法

writelines() 方法語法如下:

fileObject.writelines( [ str ])
例子:
fo = open("foo.txt", "a+",encoding="UTF-8")
seq = ["我要學Python 1\n", "我要學Python 2"]
fo.writelines( seq )
fo.flush()
fo.seek(0,0)                                            #跳到行首
line = fo.readlines()                                 #讀取所有行
print ("讀取的數據: %s" % (line))
fo.close()    # 關閉文件

輸出:
C:\Python35\python.exe D:/linux/python/all_test/總練習.py
讀取的數據: ['我要學Python 1\n', '我要學Python 2']

OK,file的基本操作,就結束了,睡覺了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM