1. 程式人生 > >Python學習筆記整理_文件操作

Python學習筆記整理_文件操作

查找 cmd 下使用 末尾 del 占用 查看 開始 內容

三元運算

三元運算又稱三目運算,其作用就是把簡單俄條件語句進行簡單化。

a=2
b=5
val = a if a<b else b
# 結果:2

  

文件處理

如何操作一個文本文件?

在一般的情況下,我們首先是需要一個文本編輯器來打開這個文本文件的,無論是查看還是寫入

到最後都是要保存於關閉的,那麽在python中是如何對文件進行操作的呢?

在Python中實現文本文件的操作

文件的讀操作

首先要明確操作文件的幾個步驟:

1.打開文件

open(‘filename‘,‘mode‘,‘encoding‘)
#參數介紹:
file:文件名,或者文件的路徑
mode:打開的模式
encoding:以哪一種編碼格式讀取或者寫入該文件,需要註意的是文件就以哪一種編碼格式寫入的就得以哪一種編碼格式來打開文件

  

2.讀取文件或者寫入文件

#1.讀取文件
f = open(‘filename‘,r,‘utf-8‘)
# 讀取文件
f.read()

  

3.保存並關閉文件

f.close()

  

文件的遍歷
f = open(‘filename‘,‘r‘,‘utf-8‘)
for line in f:
    line.read()
f.close()

  

文件的寫操作

步驟與讀取文件相同,這裏不細述,直接看例子好了:

f = open(‘filename‘,‘w‘,‘utf-8‘)
f.write(‘寫文件測試‘)
f.close
# write參數介紹:self:文件本身,寫入的文件內容

  

防止文件的覆蓋寫入(追加寫入文件)
f = open(‘filename‘,‘a‘,‘utf-8‘)

  

文件可讀可寫

文件的讀操作與寫操作都已經學會了,這時發現這些模式只能執行一種操作,而在一般的情況下使用文件編輯工具是即可以讀又可以寫的,那麽在Python中又如何實現呢?

f = open(‘filename‘,‘r+‘,‘utf-8‘)

  

操作文件的幾種模式

r:以文本模式打開當前文件
rb:以二進制的模式打開當前文件,無需指定字符編碼
w:寫入文件 如果該文件不存在會自動創建該文件,如果該文件已存在的話,會覆蓋原文件,所以使用w來寫入文件需要慎重
wb:以二進制的模式寫入文件
a:追加寫入文件
ab:以二進制模式追加寫入文件
r+:讀寫模式,文件指針會放在文件的開頭
w+:讀寫模式,如果文件存在會覆蓋原文件的內容
a+:讀寫模式,文件指針默認在文件的末尾

  

如何檢測文件的編碼?

使用中的第三方庫(模塊開檢測):首先要說明一點,chardet模塊需要自行安裝:

安裝模塊:

#1.打開終端(Windows系統 打開cmd)
#2.輸入以下命令
 pip3 install chardet
# 這裏解釋一下由於個人電腦是雙Python環境,單個Python環境使用 pip install 即可

  


?

檢測編碼:

import chardet
f = open(‘fname‘,‘rb‘)
data = f.read()
chardet.detect(data)

  

文件對象的其他方法

f.close():關閉文件
f.flush():刷新文件緩沖,直接把緩沖區的數據寫入文件
f.readable():判斷文件是否可讀
f.readline():只讀一行,包含換行符‘\n‘
f.seek():移動光標到指定位置
    參數:offset-偏移量,移動的字節數 
        whence-可選參數,默認為0,0表示文件開頭,1表示文件當前位置,2表示文件尾
f.tell():返回光標當前位置,以字節的方式查找
f.seekable():判斷文件是否可以進行seek操作
f.truncate():按指定長度截斷文件,截斷位置首行收個字符,參數size,無參數則以當前位置開始截斷,有參數              則,將文件截斷層size個字節。(在Windows中換行符為2個字節)
f.wrteable():判斷文件是否可以進行寫操作
?

  

文件的修改

1.占用硬盤的修改,需創建一個新的文件然後覆蓋該文件。

os模塊,調用系統命令,replace覆蓋文件

import os
old_name = ‘test‘
new_name = ‘new_%s‘%old_name
old_str = ‘e‘
new_str = ‘?‘
old_file = open(old_name,‘r‘,encoding=‘utf-8‘)
new_file = open(new_name,‘w‘,encoding=‘utf-8‘)
for lien in old_file:
    if old_str in lien:
        lien = lien.replace(old_str,new_str)
    new_file.write(lien)
old_file.close()
new_file.close()
os.replace(new_name, old_name)   # rename在Windows無法使用時使用

  

2.使用內存修改,無需創建新的文件

Python學習筆記整理_文件操作