python操作文件系統(python編寫文件管理系統)

本文目錄一覽:

Python文件操作,看這篇就足夠!

文件的存儲方式

在計算機中,文件是以二進位的方式保存在磁碟上的文本文件和二進位文件

文本文件可以使用文本編輯軟體查看本質上還是二進位文件

二進位文件保存的內容不是給人直接閱讀的,而是提供給其她軟體使用的二進位文件不能使用文件編輯軟體查看

文件基本操作

在計算機中要操作文件一共包含三個步驟:1.打開文件2.讀、寫文件

讀 將文件內容讀入內容寫 將內存內容寫入文件

模式描述

t文本模式 (默認)。

x寫模式,新建一個文件,如果該文件已存在則會報錯。

b二進位模式。

+打開一個文件進行更新(可讀可寫)。

U通用換行模式(不推薦)。

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

rb以二進位格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。

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

rb+以二進位格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。

w打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

wb以二進位格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。

w+打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。

wb+以二進位格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。

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

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

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

ab+以二進位格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

文件打開模式有很多,但是我們實際用到的就只有六種。

我們總結一下主要用到的是下面六種

模式可做操作若文件不存在是否覆蓋文件原來內容

r只讀報錯——

r+可讀、可寫報錯是

w只寫創建是

w+可讀、可寫創建是

a只寫創建否,追加寫

a+可讀、可寫創建否,追加寫

只讀模式打開文件——只讀(r)

文件若不存在報錯:

讀寫模式打開文件——讀寫模式(r+)

數據寫入之前:

數據寫入之後:

會替換掉相同長度的內容

文件若不存在報錯:

寫模式打開文件——寫模式(w)

數據寫入之前:

數據寫入之後:

這種操作會刪除原來的文件內容,重新寫入Python,

並且把游標放在文件最開始。

若文件不存在,系統會創建該文件夾並重新寫入內容

讀寫模式打開文件——讀寫模式(w+)

數據寫入之前:

數據寫入之後:

這種操作會刪除原來的文件內容,重新寫入Python,

並且把游標放在文件最開始。

若文件不存在,系統會創建該文件夾並重新寫入內容

利用這個原理所以文件寫模式(w)、讀寫模式(w+)還可以用作刪除文件內容。

因為他們整個工作原理就是把文件原來的內容刪除,然後寫入新的內容。

如果我們寫入的內容為空,那麼不就是刪除文件內容。

數據寫入之前:

數據寫入之後:

寫模式打開文件(追加內容)——寫模式(a)

數據寫入之前:

數據寫入之後:

可以看到是在原先內容的基礎上在文末追加新的內容!

若文件不存在,系統會創建新的文件夾並寫入內容

讀寫模式打開文件(追加內容)——讀寫模式(a)

數據寫入之前:

數據寫入之後:

可以看到是在原先內容的基礎上在文末追加新的內容!

若文件不存在,系統會創建新的文件夾並寫入內容

二進位模式打開文件

我們看到了在文件打開模式中有以下模式:rb、wb……有這種帶 b 的。

什麼意思呢?

就是用二進位的方式打開文件。

很明顯,我們出現了以下錯誤:

主要原因是因為編碼的問題,可能是因為0x82這個位元組在gbk編碼中沒有這個字元,

可能原字元是兩個位元組,在gbk里被解析成了一個位元組,導致字元不存在。

這就是我們文件打開方式需要使用二進位讀取的原因。

文件操作

open 函數負責打開文件,並且返迴文件對象

read /write / close 三個方法都需要通過文件對象 來調用

文件和文件夾的操作

在Python中⽂件和⽂件夾的操作要藉助os模塊⾥⾯的相關功能,

具體步驟如下:

導⼊os模塊

使⽤ os 模塊相關功能

1、文件重命名

2、刪除文件

3、創建文件夾

4、刪除文件夾

5、獲取當前目錄

6、改變默認目錄

7、獲取目錄列表

如何用python刪除一個文件

使用Python刪除文件有多種方法,但是最好的方法如下:

os.remove()刪除文件

os.unlink()刪除文件

shutil.rmtree()刪除目錄及其下面所有內容

pathlib.Path.unlink()在Python3.4及更高版本中用來刪除單個文件pathlib模塊。

os.remove()刪除文件

Python中的OS模塊提供了與操作系統進行交互的功能。OS屬於Python的標準實用程序模塊。該模塊提供了使用依賴於操作系統的功能的便捷式方法。

python中的os.remove()方法用於刪除文件路徑。此方法無法刪除目錄。如果指定的路徑是目錄,則該方法將引發OSError。

注意:可以使用os.rmdir()刪除目錄。

使用os.unlink()刪除Python文件

os.unlink()是os.remove()的別名。在Unix OS中,刪除也稱為unlink。

注意:所有功能和語法與os.unlink()和os.remove()相同。它們都用於刪除Python文件路徑。兩者都是Python標準庫的os模塊中執行刪除功能的方法。

它有兩個名稱,別名:os.unlink()和os.remove()。

為同一個函數提供兩個別名的可能原因是,該模塊的維護者認為,許多程序員可能會從C的底層編輯轉向Python,其中庫函數和底層系統調用稱為unlink(),而其他人則可能會使用rm命令或shell腳本來簡化語言。

使用shutil.rmtree()刪除Python文件

shutil.rmtree():刪除指定的目錄,所有子目錄和所有文件。此功能特別危險,因為它無需檢查即可刪除所有內容。結果,您可以使用此功能輕鬆丟失數據。

rmtree()是shutil模塊下的一種方法,該方法以遞歸方式刪除目錄及其內容。

使用pathlib.Path.unlink()刪除文件

pathlib模塊在Python3.4及更高版本中可用。如果要在Python2中使用此模塊,可以使用pip進行安裝。pathlib提供了一個面向對象的界面,用於處理不同操作系統的文件系統路徑。

要使用pathlib模塊刪除文件,請創建一個指向該文件的Path對象,然後對該對象調用unlink()方法。

python 學習,需要有哪些基礎呢?

1、有較強的邏輯思維能力

幾乎所有編程語言的學習都離不開較強的邏輯思維能力,因為編程語言是人與計算機的對話,任何歧義和差錯都會影響最終的運行效率。

2、有較強的數理專業背景

學習Python最理想的專業有數學、統計學、物理學、計算機科學等專業,因為Python語言所操作的對象很可能是大數據收集與分析,以及AI開發領域,有以上的學科背景會對今後的發展有很好的優勢。

3、有豐富的運維經驗

可能很多學計算機的同學在畢業之後從事了伺服器、後台管理的運維工作,這既有優勢、也有劣勢。所謂優勢就是有現成的成品擺在你面前,你在做運維的過程中會對產品開發理解更加充分,然而劣勢就在於對自身的技術提高幫助可能比較有限。這時學Python,更在於從運維轉開發,這也是對自己職業生涯的一種新規劃。

4、從事Web全棧開發工作

以前開發web,Java是主角,但如今越來越多的web開發開始青睞於Python,究其原因其實也是因為網路數據量的日益龐大以及人工智慧的普及,所以精通Python語言對於從事web全棧開發將有積極的影響。

Python 文件操作

open(filename[,mode,encoding=”編碼”]) :第一個參數文件名如果不加路徑,默認在該py文件目錄下(路徑舉例: E:/XXX或E:\\xxx ),第二個是模式,默認為 ‘r’ ——只讀,舉例: f = open(‘E:/abc.txt’) ,如果要轉編碼並寫入模式:

f = open(‘E:/abc.txt’,’w’,encoding=’utf-8′)

1. 模式

2. 方法

(1) close() : 關閉文件,因為文件寫入時是寫在內存,只有關閉時才寫入硬碟,所以寫完記得關閉

(2) read(size = -1) :讀取文件size個字元,不寫默認是-1,此時讀取所有內容(換行按\n來表示,很不好看),並作為字元串返回,一定要注意 讀完以後文件指針將會指向末尾 ,所以下一次在用read方法時會發現讀取不出內容了,所以這個就要用seek移動指針或者關閉文件重新定義

(3) tell() :返回當前文件指針指向的位置

(4) seek(offset,from) :移動文件指針,代表從from參數開始偏移offset個位元組,0代表起始位置,1代表當前位置,2代表文件末尾

(5) readline() :按序列讀取一行內容,默認\n為邊界

(6) write() :寫入內容,但必須要有寫入許可權才行,否則報錯,寫完會返回寫入的長度,例如: len1 = f.write(‘abc’) ,此時len1就為3

(7) truncate() :刪除內容,把當前指針以後的內容全刪了,舉例:

註:

1.文件還可以轉化為 list 之類的,例如: list1 = list(f) ,此時文件內容的按\n被隔開,然後可以用for語句讀取文件所有內容,舉例:

2.上面輸出文件內容方法相對低效,所以一般都直接用for輸出整個文件,舉例:

通過 fileno 函數,我們可以查看一個文件對應的文件描述符,對應的是程序中打開的文件序號,舉例:

可以看出python在啟動時會先啟動標準流的文件(文件描述符分別為:0/1/2),所以之後打開的文件就從3開始遞增,當釋放一個文件資源時,該描述符序號被釋放,之後打開的文件可以繼續使用該序號的文件描述符

python中的 print 的本質是通過 sys.stdout 來進行內容輸出,而 sys.stdout 的本質是一個”文件”,相當於我們所有的輸入輸出的本質都是在對 sys.stdin / sys.stdout / sys.stderr 這些文件來進行讀寫操作,舉例:

open 函數不僅可以打開本地文件,也可以打開文件描述符,而該參數默認為 True ,代表 close 後會將對應的文件資源釋放,而對於一些文件描述符,我們只是希望 close 時將打開文件描述符的對象釋放,而不釋放對應的文件資源,那麼則可以設置 closefd=False ,舉例:

需要使用到 chardet 模塊,按二進位可讀打開文件,然後通過 detect() 方法查看,舉例:

所以就可以根據文件來設置編碼了:

有時候使用文件的編碼解碼也可能會出現無法解析的情況,例如兩種編碼混在同一個文件里的時候,此時可以設置 errors 參數為 ignore 來避免該問題,示例:

可用 os 模塊下的 chmod() 函數,具體參考:

使用 os 模塊下的 remove() 函數可以實現刪除文件,舉例:

可以使用自帶的 zipfile 模塊來進行操作,舉例:

可以使用自帶的 tarfile 模塊來進行操作,舉例:

python操作文本文件

在磁碟上讀寫文件之前,必須先打開這個文件。打開文件就需要提供文件的路徑。

在與Python程序同一個目錄下,我們有一個名為 pi.txt 的文件,它的內容如下:

現在使用Python來打開和關閉它:

執行此程序不會有任何輸出,這表示著打開和關閉文件都得到了正確執行。

可以看到,使用 open() 函數打開文件,參數為文件名(或文件路徑);該函數會返回一個文件句柄,文件句柄並不會實際保存文件的內容,而是代表著一種操作,在上面的例子中,文件句柄被賦值給變數 fhand 。

打開文件後,程序具有讀(默認)該文件的許可權。

最後,使用文件句柄的 close() 方法關閉文件。這非常重要,因為使用完而沒有關閉的文件會佔用內存或造成安全問題。

如果Python找不到該文件,則會返回錯誤,比如下面這樣:

Python提示我們沒有相應的文件或者目錄: ‘pii.txt’。

打開文件後就可以對文件進行操作:

fhand.read() 方法將文件內容作為一個字元串返回。

文件中的每一行末尾使用換行符 \n 表示換行,例子中方法 rstrip() 去掉文本中的換行符,然後輸出。

程序的運行效果如下:

如果在文件關閉之前程序發生BUG意外退出,則文件不會關閉,為了避免此類事件的發生,可以使用 with 語句:

with 語句的特點是即便在操作文件時發生錯誤,文件也會自動被清理。

fhand.read() 雖然可以讀取文本內容,但是當我們想要逐行處理文件內容,或者文件很大而無法一次性載入進內存的時候,就不適用了。

可以使用 for 語句逐行處理文件內容:

本程序中將文件名保存在變數 filename 中。

打開文件後,使用 for 語句按行讀取文件內容。例子中,每次循環依次取一行文本以字元串的格式保存在變數 line 中,每次循環中變數 count 自增1。

這個程序的作用是,打開程序所在目錄的 when_old.txt 文件,然後統計行數,並輸出結果。

when_old.txt 文件的內容是:

可以使用其他方法操作字元串 line :

程序將以 ‘And’ 開頭的行列印出來。

打開文件後,默認的許可權是讀(r),如果要寫文件,則需要使用寫(w)或者追加(a)許可權。

w許可權,打開一個文件用於寫入。如果該文件存在,則覆蓋該文件;如果該文件不存在,則創建該文件。

a許可權,打開一個文件用於追加。如果該文件存在,在文件末尾追加;如果該文件不存在,則創建該文件。

下面是一個使用w許可權打開文件的例子:

例子中使用w許可權打開該文件,並寫入兩行。(如果該文件存在,則內容會被覆蓋)

fhand.write() 不會自動添加換行符,所以如果需要換行,需在末尾添加 \n 。

下面我們寫一個統計文件中詞頻的程序。

它會統計文件中各個詞的出現的次數,然後由高到低顯示出前5個詞。

首先我們完成打開和關閉文件的程序內容:

在例子中,由用戶輸入文件名,並且使用異常捕獲以處理文件打開時的錯誤。

下面對內容進行統計:

這個程序:

如此,我們就在字典中存放了 單詞:次數 的鍵值對。

由於字典不能保存順序,所以不能對其進行排序。為此,將每個鍵值對都添加到一個列表中:

在列表 word_list 中,每一項都是一個元組,每個元組第一個值是單詞出現的次數,第二個值是單詞內容。

對其進行逆向(由大到小)排序:

列印最終結果:

整個程序如下:

下面是程序運行結果的示例:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279027.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-20 15:02
下一篇 2024-12-20 15:02

相關推薦

  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • Python如何導入py文件

    Python是一種開源的高級編程語言,因其易學易用和強大的生態系統而備受青睞。Python的import語句可以幫助用戶將一個模塊中的代碼導入到另一個模塊中,從而實現代碼的重用。本…

    編程 2025-04-29

發表回復

登錄後才能評論