文件的九個基本存取權限?文件操作中最基本的當然屬于文件的讀寫操作當我們利用爬蟲抓取到一堆數據時,就需要進行文件寫操作,将數據寫入到文件當中;當我們需要對抓取到的文件内容進行篩選,獲取有效信息時,需要對文件進行讀操作本文将介紹文件操作的一些基本内容,助您更高效的處理文件,我來為大家科普一下關于文件的九個基本存取權限?以下内容希望對你有幫助!
文件的九個基本存取權限
文件操作中最基本的當然屬于文件的讀寫操作。當我們利用爬蟲抓取到一堆數據時,就需要進行文件寫操作,将數據寫入到文件當中;當我們需要對抓取到的文件内容進行篩選,獲取有效信息時,需要對文件進行讀操作。本文将介紹文件操作的一些基本内容,助您更高效的處理文件。
打開和關閉文件文件的打開模式多種多樣,就像“條條道路通羅馬”一樣,每一種模式都可以用來打開文件,但是由于“道路”的不同,它們對于打開後文件内容的處理方式不一樣。相比來說文件的關閉模式就簡單得多了。
文件的打開模式表格内列出了一些常見的文件打開模式以及它對于文件的作用。
模式 |
描述 |
b |
以二進制模式打開文件。 |
以讀寫模式打開一個文件。 | |
r |
以隻讀方式打開文件,打開後文件的指針将會放在文件的開頭。 |
rb |
以二進制格式打開一個文件用于隻讀,文件指針将會放在文件的開頭。 |
r |
以讀寫模式打開一個文件,文件指針将會放在文件的開頭。 |
rb |
以二進制格式打開一個文件用于讀寫,文件指針将會放在文件的開頭。 |
w |
以寫模式打開一個文件,如果該文件已存在則打開文件,删除原有文件内容并從開頭開始編輯,如果該文件不存在,則創建新文件。 |
wb |
以二進制格式打開一個文件隻用于寫入,如果該文件已存在則打開文件,删除原有文件内容并從開頭開始編輯,如果該文件不存在,則創建新文件。 |
w |
以讀寫模式打開一個文件,如果該文件已存在則打開文件,删除原有文件内容并從開頭開始編輯,如果該文件不存在,則創建新文件。 |
wb |
以二進制格式打開一個文件用于讀寫,如果該文件已存在則打開文件,删除原有文件内容并從開頭開始編輯,如果該文件不存在,則創建新文件。 |
a |
以追加模式打開一個文件,如果該文件已存在,文件指針将會放在文件的結尾,将新内容寫入到已有内容之後,如果該文件不存在,創建新文件進行寫入。 |
ab |
以二進制格式打開一個文件用于追加,如果該文件已存在,文件指針将會放在文件的結尾,将新内容寫入到已有内容之後,如果該文件不存在,創建新文件進行寫入。 |
a |
以追加模式打開一個文件,如果該文件已存在,文件指針将會放在文件的結尾,将新内容寫入到已有内容之後,如果該文件不存在,創建新文件進行寫入。 |
ab |
以二進制格式打開一個文件用于追加,如果該文件已存在,文件指針将會放在文件的結尾,将新内容寫入到已有内容之後,如果該文件不存在,創建新文件進行寫入。 |
簡單總結起來就是: r (read)讀取,w (write)寫入,a (add)追加,配上 後可讀可寫。
Python 内置文件打開和關閉函數open(file, mode=‘r’, buffering=-1, encoding=None),文件打開函數,返回一個 file 對象,從而可以對文件進行讀寫操作。
close(),文件關閉函數,沒有返回值,用于關閉一個已打開的文件,關閉後的文件不能再進行讀寫操作。
每一個文件打開 open() 函數必須搭配一個文件關閉函數 close(),這樣養成一個良好的編碼習慣。
示例:
# 打開 'python-100.txt' 文件,如果文件不存在會在程序文件 *.py 所在的目錄下創建該文件。
file = open('python-100.txt', 'w')
print('測試1:python-100.txt 文件已打開。')
# 關閉已打開的 'python-100.txt' 文件
file.close()
print('測試1:python-100.txt 文件已關閉。')
# 打開 'C:\Users\Desktop\py' 路徑下的 'python-100.txt' 文件。
file = open('C:\\Users\\Desktop\\py\\python-100.txt', 'w')
print('測試2:python-100.txt 文件已打開。')
# 關閉已打開的 'python-100.txt' 文件
file.close()
print('測試2:python-100.txt 文件已關閉。')
這種模式下文件打開之後不需要寫入文件關閉函數 close(),程序會在執行完 with 結構體中的程序後自動關閉打開的文件。
示例:
# 打開 'python-100.txt' 文件,如果文件不存在會在程序文件 *.py 所在的目錄下創建該文件。
with open('python-100.txt', 'w') as f:
print('測試1:python-100.txt 文件已打開。')
print('測試1:python-100.txt 文件已關閉。')
# 打開 'C:\Users\Desktop\py' 路徑下的 'python-100.txt' 文件。
with open('C:\\Users\\Desktop\\py\\python-100.txt', 'w') as f:
print('測試2:python-100.txt 文件已打開。')
print('測試2:python-100.txt 文件已關閉。')
當我們打開一個文件之後,根據需要我們會對文件内容進行一些操作, Python 當然為我們提供了文件内容的讀寫方法。
以下表格内列出了一些常用的文件讀寫方法:
讀寫方法 |
描述 |
read() |
一次性将文件中的内容全部讀取出來,缺點就是文件過大的話很容易導緻内存崩潰。 |
read(n) |
一次讀取 n 個字符,如果再次讀取,會在上一次讀取過後的位置接着去讀取而不是從頭開始讀取, 如果使用的是 rb 模式,則讀取出來的是 n 個字節。 |
readline() |
一次讀取一行内容,每次讀取出來的内容都以換行符 ‘\n’ 結尾。 |
readlines() |
一次讀取打開文件的全部内容,返回一個列表,每一行内容作為元素放到一個列表中,缺點就是文件内容過大容易出現内存崩潰的問題。 |
write(s) |
寫入字符串 s,如果再次寫入,會在上一次寫入的位置末尾繼續寫入。 |
writelines(s) |
寫入字符串或列表 s,如果是列表的話列表中的所有元素必須為 string 類型,如果再次寫入,會在上一次寫入的位置末尾繼續寫入。 |
# 以 r 模式打開本地建立的 python-100.txt 文件,以 'utf-8' 編碼讀取文件中的所有内容
with open('python-100.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
# 輸出結果
# Python-100
# 堅持100天
# 1.以 r 模式打開本地建立的 python-100.txt 文件,每次讀取 n 個字符
with open('python-100.txt', 'r', encoding='utf-8') as f:
content = f.read(8)
print(content)
content = f.read(8)
print(content)
# 輸出結果(注意:每次讀取到的換行符 '\n' 也是算一個字符的,換行符位于每行内容的末尾)
# Python-1
# 00
# 堅持100
# 2.以 rb 模式打開本地建立的 python-100.txt 文件,每次讀取 n 個字節,注意是字節
with open('python-100.txt', 'rb') as f:
content = f.read(8)
print(content)
content = f.read(8)
print(content)
# 輸出結果
# b'Python-1'
# b'00\r\n\xe5\x9d\x9a\xe6'
# 以 r 模式打開本地建立的 python-100.txt 文件,每次讀取文件中的一行内容,利用 strip() 函數去掉每一行末尾的換行符
with open('python-100.txt', 'r', encoding='utf-8') as f:
firstLine = f.readline().strip('\n')
secondLine = f.readline().strip('\n')
print(firstLine)
print(secondLine)
# 輸出結果
# Python-100
# 堅持100天
# 以 r 模式打開本地建立的 python-100.txt 文件,讀取文件中所有内容,以列表形式返回
with open('python-100.txt', 'r', encoding='utf-8') as f:
content = f.readlines()
print(content)
for line in content:
print(line.strip('\n'))
# 輸出結果
# ['Python-100\n', '堅持100天']
# Python-100
# 堅持100天
# 每次讀取一行内容,該方法較為實用
with open('python-100.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip('\n'))
# 輸出結果
# Python-100
# 堅持100天
# 以 r 模式打開本地建立的空文件 python-100.txt,向文件中寫入内容并讀取
f = open('python-100.txt', 'w', encoding='utf-8')
f.write('Python-100\n')
f.write('堅持100天')
f.close()
f = open('python-100.txt', 'r', encoding='utf-8')
print(f.read())
f.close()
# 輸出結果
# Python-100
# 堅持100天
# 以 r 模式打開本地建立的空文件 python-100.txt,向文件中寫入内容并讀取
f = open('python-100.txt', 'w', encoding='utf-8')
content = ['Python-100\n', '堅持100天']
f.writelines(content)
f.close()
f = open('python-100.txt', 'r', encoding='utf-8')
print(f.read())
f.close()
# 輸出結果
# Python-100
# 堅持100天
定位方法 |
描述 |
tell() |
返回當前文件讀取指針在什麼位置,按字節數來确定的。 |
seek(n) |
用于移動文件讀取指針到指定位置,移動的單位為字節。 |
tell() 函數應用示例
# 以 w 模式打開本地建立的空文件 python-100.txt,獲取文件中讀取指針的位置
f = open('python-100.txt', 'w', encoding='utf-8')
print('打開空文件時,指針位置為:', f.tell())
f.write('Python-100\n' '堅持100天') # 'utf-8'編碼格式下,換行符占 2 個字節,漢字占 3 個字節
print('寫入内容後,指針位置為:', f.tell())
f.close()
# 輸出結果:
# 打開空文件時,指針位置為: 0
# 寫入内容後,指針位置為: 24
seek(offset, whence=0) 函數應用示例
# 以 r 模式打開文件 python-100.txt,移動文件中讀取指針的位置
f = open('python-100.txt', 'rb')
print("1.文件内容為:")
print(f.read().decode('utf-8'))
f.seek(6)
print('\n2.偏移量為 12 個字節時,輸出内容為:')
print(f.read().decode('utf-8'))
f.seek(-12, 2)
print('\n3.偏移量為 -12 個字節時,輸出内容為:')
print(f.read().decode('utf-8'))
print('\n4.在當前指針位置偏移:')
f.seek(12)
print('文件指針當前位置為:', f.tell())
f.seek(-6, 1)
print('文件指針當前位置為:', f.tell())
f.seek(6, 1)
print('文件指針當前位置為:', f.tell())
print(f.read().decode('utf-8'))
f.close()
# 輸出結果:
# 1.文件内容為:
# Python-100
# 堅持100天
#
# 2.偏移量為 12 個字節時,輸出内容為:
# -100
# 堅持100天
#
# 3.偏移量為 -12 個字節時,輸出内容為:
# 堅持100天
#
# 4.在當前指針位置偏移:
# 文件指針當前位置為: 12
# 文件指針當前位置為: 6
# 文件指針當前位置為: 12
# 堅持100天
本節給大家介紹了 Python 中 文件操作的基本使用方法,主要是文件的讀寫操作,可以助您更高效的處理爬蟲獲取到的消息内容。