在Python寫代碼做項目時,我們往往需要對多個文件進行操作,在現在的源代碼文件中怎么導入其他文件?怎么對其他文件進行操作?這都是經常要面臨的問題,尤其是爬蟲,爬到的數據放在哪里?用到的時候怎么調出來?
這就涉及到了Python的文件操作知識了,我們不可能永遠都只會在一個源文件上做所有的操作,這也是必須掌握的一個知識板塊。
與此同時,我的Python新手入門教程系列文章也已經快更新完了,歡迎大家的訂閱:
計算機中的文件通常是指計算機硬盤為載體的、存儲在計算機中的信息集合,主要的表現形式為視頻、音頻、圖片以及文檔四類,比如執行性文件.exe、文檔文件.txt、網頁文件.html等等。
在現實中,我們對文件進行操作可以大致總結為“打開→操作(閱讀、刪除、修改等)→保存→關閉”,在Python當中依然是如此,在用Python開始文件操作之前,我們先學幾個方法。
1.open(name,mode) ----打開文件
這是Python打開文件的方法,用于打開一個文件,返回的是一個文件對象。
name指的是文件名,一定要寫全,何為寫全?就是要寫清楚 存儲路徑+文件名+后綴 。
為何要寫這么全?因為就算是相同的存儲路徑下,文件名相同的文件也可能不止一個,只要后綴不一樣,計算機是允許存在同名文件,所以不寫全的話,計算機是不知道你指的是誰
mode是打開文件的模式,默認是r,也就是只讀的方式。mode的方式有很多,比如讀、寫等等,后面我們會講到。
2.write(“內容") ------寫
顧名思義,就是向文件對象中寫入內容。
3.read() -------讀
向文件中寫入內容,括號里面可以寫數字也可以不寫,不寫的話默認是讀取全部內容,寫數字則表示讀取X個字符,比如說read(6)則讀取文件對象的6個字符。
4.close() ------關閉文件
關閉文件的方法,如果你在進行文件操作之后不進行關閉文件,則文件一直處于打開和操作的狀態,會占用內存。
5.案例
在了解了這4個基本方法之后,我們來開始做1個小案例:新建一個項目,然后新建一個名為“文件”的Python文件用于寫代碼,然后我們用寫的方式向1個叫“文件1”的.txt文件寫入“hello world”,代碼如下:
f = open("文件一.txt","w") #以寫入的方式,打開文件f.write("hello world") #向文件一中寫入內容f.close() #關閉文件
前面講過 open() 這個方法返回的是一個文件對象,所以我們用f進行接收一下,這是沒有運行前的界面:
運行后:
運行后生成了一個新的名為“文件一.txt”文件,打開它之后就能看到我們輸入的內容。進行寫操作時,如果文件不存在,則默認會創建一個。
同樣的,我們也可以對這個文件進行讀的操作:
f = open("文件一.txt","r") #以寫入的方式,打開文件print(f.read()) #讀文件f.close() #關閉文件
運行結果:
hello world
這就是一個最基本的文件操作流程。
在這里要注意一點,open(name,mode)在一開始寫的時候,mode就已經決定了你能做什么操作,也就是說如果你在開始寫代碼的時候寫的是:
f = open("文件一.txt","r") #只讀的方式打開文件
那么后面你想進行write()的寫操作是會報錯的,因為mode里面聲明了r只讀模式,所以你沒有寫的權限,這一點要注意一下。
6.mode的其他操作模式
mode中有很多的操作模式,我們以表格的方式來看看:
模式 | 描述 |
---|---|
r | 以只讀的形式打開文件,文件的指針在開頭 |
r+ | 讀寫,文件指針在開頭 |
rb | 以二進制的形式,只讀文件指針在開頭 |
w | 只寫,文件不存在,則創建新的,存在則覆蓋,指針在開頭 |
w+ | 讀寫,文件不存在,則創建新的,存在則覆蓋,指針在開頭 |
wb | 只寫,以二進制的形式 |
a | 追加模式,文件指針在結尾 |
a+ | 讀寫,不存在則創建,存在直接追加 |
ab | 以二進制形式追加 |
指針在這里可以理解為光標,它在哪里,你的操作就從哪里開始。
舉例:新建1個名為 “test” 的.txt文件,第一次向里面寫入aaa,第二次向里面寫入bbb。
f = open("test.txt", "a+")f.write("aaa")f.close()f = open("test.txt") # 默認只讀模式print(f.read()) # 打印內容f = open("test.txt", "a+")f.write("bbb")f.close()f = open("test.txt") # 默認只讀模式print(f.read()) # 再次打印內容
運行結果:
aaaaaabbb
1.file的對象屬性
有三個常用的方法可用于查看文件對象的屬性:
1. closed 如果文件對象已關閉,返回True,否則返回False2. mode 返回文件對象的訪問模式3. name 返回文件的名稱
案例:對文件進行操作(隨意),查看被操作的文件名、操作模式和是否關閉。
f = open("test.txt", "a+")f.write("aaa")f.close()print(f.closed) #查看是否關閉print(f.name) #查看文件名字print(f.mode) #查看操作模式
運行結果:
Truetest.txta+
2.file的對象方法
文件的方法有很多,前面我們已經講過一點,比如read()和write(),但還有一些常用的方法需要掌握的,比如下面的:
1. close() 關閉文件---非常重要2. read([count]) 讀取文件中的內容 count:字節數量3. readlines() 讀取所有內容,打包成列表4. readline() 讀取一行數據,追加讀取,讀取過的不能再次讀取5. seek(offset,[from]) 修改指針的位置:從from位置移動了offset個字節 from:0則表示從起始位置,1則表示從當前位置開始,2則表示從末尾開始 oofset:要移動的字節數6. write() 向文件中寫入內容
舉例:向test.txt文件中寫入aaabbbccc,將文件中的內容輸出為列表。
f = open("test.txt", "a+")f.write("aaabbbccc")f.close()f = open("test.txt")print(f.readlines())f.close()
運行結果:
["aaabbbcccaaabbbccc"]
os模塊是一個用于訪問操作系統的模塊,在進行文件操作的時候常會用到它。模塊在使用之前要進行導入。
import os
1.關于文件的功能
1.os.rename(原文件名,新的文件名) ——文件重命名2.os.remove(文件名) ——刪除文件 如果不說明路徑,則在源代碼所在文件夾下尋找,尋找不到會報錯。 若想刪除指定文件夾下的文件,文件名則需要具體路徑,例如 os.remove(r"D:/test_1/文件名"),r防止斜杠發生轉義
舉例:已有文件test1.txt,將其修改成test20.txt。
import osos.rename("test1.txt","test20.txt")
運行結果:
2.文件夾的功能
1.os.mkdir(文件夾名) ——創建文件夾2.os.rmdir(文件夾名) ——刪除文件夾3.os.getced() ——獲取當前目錄4.os.chdir(目錄) ——切換目錄5.os.listdir(目錄) ——獲取當前文件夾下所有的文件或者文件夾,返回一個列表 os.listdir("aa") #獲取aa文件夾下的所有文件或文件夾,返回一個列表
舉例:在現有文件夾venv里面新建一個新建文件夾。
import osos.chdir(r"D:/文件/venv") #切換到venv文件夾下,r是防止轉義os.mkdir("新建文件夾") #在venv文件夾下創建一個新建文件夾print(os.getcwd()) #輸出當前目錄位置
運行結果:
關于文件其實還有很多的方法,用到的時候可以去網上查查資料去深入了解,比如說os模塊里面還有其他的方法,我們可以ctrl+鼠標左鍵進入模塊內部查看,比如說不止os模塊,還有os.path這個模塊也是比較常用的文件操作模塊。
那么今天的分享就先到這里,看完可以收藏起來多練練,文件操作也就不再困難了。
準備了很久,我的公眾號終于是開始運作了,關于我的技術和經驗文章都會優先在上面進行推送,目前還在不斷完善中,歡迎大家的關注。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/120982.html
上次講了2個游戲源碼 前端實戰之js推箱子游戲(有界面、附源碼、贊關藏) Python實戰:五子棋小游戲,切身感受一下前端和桌面應用的區別,選擇自己喜歡的 本來今天準備寫一篇面向對象文章,但是想一想,講面向對象之前還是先給大家介紹幾款實用的工具,更加快速的理解,掌握知識點。 1.UML 統一建模語言(Unified Modeling Language,UML)是一種為面向對象系統的產品進行說明、可...
?前言 代碼出現異常而報錯再正常不過了,但為什么要處理異常? 由于異常的存在,代碼運行時會出現一大堆的紅色字體提示,對于程序員還好,見紅色報錯見多了習慣了,但如果你開發出來的東西要給別人看,那么不懂代碼的人就會一臉懵逼,對產品的印象都不太好了。 比如我們經常簡單網頁丟失的情況,其實是就是網頁代碼執行時發生了異常,但有的網頁還是很個性的,提示的信息可能是比較人性化的,比如CSDN你收藏的文章被后臺刪...
前言 最近,我在群里答疑的時候,經常碰到,小伙伴,再變量,縮進,參數,方面使用錯誤,導致程序運行不來。 今天,打算自己寫一篇。 Python 變量作用域,和生命周期。 徹底弄懂變量該怎么使用。 知識點 變量的使用,有作用域區別,也有生命周期的區別。 1.變量作用域 局部變量 python能夠影響變量作用域的代碼段是def、class、lamda。 def scopeTest(): local...
摘要:標簽不區分大小寫,但推薦小寫。標簽可以嵌套,但不能交叉嵌套。標簽也稱為元素。比如行內標簽亦可成行內元素。 ??HTML必備知識詳解?? 第一部分:HTML框架簡介...
摘要:前言在開發技術和應用市場完全成熟的今天,有人希望深耕技術打造出自己的一片天地,也有人想廣泛學習在程序員市場中游刃有余。而這本書上千的引用論文,給我指明了一條系統學習理論的明路。 ...
閱讀 3565·2021-09-24 09:48
閱讀 1087·2021-09-10 10:51
閱讀 3267·2019-08-30 13:03
閱讀 3315·2019-08-30 12:51
閱讀 1387·2019-08-30 11:22
閱讀 1051·2019-08-29 18:38
閱讀 2034·2019-08-29 16:41
閱讀 3182·2019-08-29 15:32