Python基礎語法入門(第二十天)——文件操作

一、基礎內容

在Python中,路徑可以以不同的表現形式進行表示。以下是一些常用的路徑表現形式:

1. 絕對路徑:它是完整的路徑,從根目錄開始直到要操作的文件或文件夾。在Windows系統中,絕對路徑以盤符開始,如`C:\Users\username\Documents\file.txt`;在Unix/Linux系統中,絕對路徑從根目錄`/`開始,如`/home/username/Documents/file.txt`。2. 相對路徑:它是相對于當前工作目錄的路徑。相對路徑不包含根目錄,而是根據當前位置來定位。例如,當前工作目錄是`/home/username/Documents`,要操作的文件在此目錄下,則可以使用相對路徑`file.txt`。3. 轉義字符:在字符串中,路徑中的特殊字符可以使用轉義字符進行表示。例如,反斜杠`\`表示目錄路徑中的分隔符,在Windows中表示為`\`,在Unix/Linux中表示為`/`。4. 原始字符串:在字符串前加`r`作為前綴,可以創建原始字符串,其中的特殊字符不會被轉義。原始字符串特別適用于Windows路徑,因為Windows路徑中包含許多反斜杠。例如,`r"C:\Users\username\Documents\file.txt"`。

在實際使用中,可以根據不同的操作系統和需求選擇適合的路徑表現形式。另外,Python提供了os.path模塊,其中包含了一些函數和方法用于處理路徑,例如os.path.join()用于連接路徑組件、os.path.abspath()用于獲取絕對路徑等。這些函數和方法可以幫助我們更方便地處理路徑。

1.1 路徑拼接

在不同的操作系統中,路徑使用的斜杠并不是相同的,但是可以通過os.path.join()來拼接出正確的路徑,代碼如下:

import os
print(os.path.join('C', 'Program Files', 'Common Files'))# 輸出結果:
# C\Program Files\Common Files

1.2 路徑名與文件名分離

os.path.dirname(path):返回path參數中最后一個斜杠之前的內容,即:返回目錄名稱
os.path.basename(path):返回path參數中最后一個斜杠之后的內容,即:返回基本名稱

在這里插入圖片描述

import os
path = r'C:\Windows\System32\666.exe'
print(os.path.dirname(path))    #獲取目錄名稱
print(os.path.basename(path))   #獲取基本名稱# 輸出結果:
# C:\Windows\System32
# 666.exe

os.path.split()獲取路徑的目錄名稱和基本名稱,返回由兩個字符串組成的元組

import ospath = r'C:\Windows\System32\666.exe'
print(os.path.split(path))# 輸出結果:
# ('C:\\Windows\\System32', '666.exe')

1.3 文件夾創建

使用os.makedirs創建文件夾,并且會創建出中間所有必要的中間文件夾,來確保完整路徑名存在。使用os.path.exists()能夠判斷路徑是否存在,存在則返回True否則False

import osif not os.path.exists(r'D:\Program Files\666\777\888'):   #證明不存在此路徑os.makedirs(r'D:\Program Files\666\777\888')

1.4 路徑有效性

在1.3中os.path.exists()判斷路徑是否存在,除此之外還可以判斷文件或者某個文件夾是否存在。

os.path.exists:如果路徑存在(可以是文件、文件夾),就返回True
os.path.isfile:如果路徑存在,并且是個文件,就返回True
os.path.isdir:如果路徑存在,并且是個文件夾,就返回True
import osprint(os.path.exists(r'C:\Windows'))                    #檢查路徑是否存在
print(os.path.isfile(r'C:\Windows\System32\666.exe'))  #檢查文件是否存在
print(os.path.isdir(r'C:\Windows'))                     #檢查文件夾是否存在# 輸出結果:
# True
# True
# True

二、文件讀寫

在Python中,文件的讀寫操作通常使用open()函數來實現。其可操作的文件對象包括(但不限于)以下幾種類型,本節中的案例皆以文本類型txt為例

1.文本文件(Text Files):這是最常見的文件類型,包含文本內容。使用open()函數以文本模式("r""w"等)打開文本文件。2.二進制文件(Binary Files):這些文件包含二進制數據,例如圖片、視頻、音頻等。使用open()函數以二進制模式("rb""wb"等)打開二進制文件。3.CSV文件(Comma-Separated Values Files):這些文件以逗號或其他特定字符作為字段分隔符,存儲表格數據。可以使用open()函數以文本模式打開CSV文件,并使用適當的處理方法(例如csv模塊)讀取或寫入CSV文件。4.JSON文件(JavaScript Object Notation Files):這些文件以JSON格式存儲數據,常用于數據交換。可以使用open()函數以文本模式打開JSON文件,并使用適當的處理方法(例如json模塊)讀取或寫入JSON文件。5.XML文件(eXtensible Markup Language Files):這些文件以XML格式存儲數據,常用于數據交換和配置文件。可以使用open()函數以文本模式打開XML文件,并使用適當的處理方法(例如xml.etree.ElementTree模塊)讀取或寫入XML文件。除了上述類型的文件,open()函數還可以操作其他類型的文件,例如配置文件(INI、YAML等)、日志文件(Log files)、數據庫文件等。

2.1 open()函數的基本使用

open()函數是Python中用于打開文件的內置函數。它的基本使用形式如下:

file = open(file_path, mode)

其中,file_path是文件的路徑(可以是相對路徑或絕對路徑),mode是打開文件的模式,默認情況下為r只讀模式。

2.2 常用的文件打開模式

"r":只讀模式,用于讀取文件內容。
"w":寫入模式,用于寫入文件內容。如果文件已存在,會清空文件內容;如果文件不存在,則會創建新文件。
"a":追加模式,用于向文件末尾追加內容。如果文件不存在,則會創建新文件。
"rb":二進制讀取模式,用于讀取二進制文件。
"wb":二進制寫入模式,用于寫入二進制文件。
"ab":二進制追加模式,用于向二進制文件末尾追加內容。
"rt":文本讀取模式,用于讀取文本文件(默認模式)。
"wt":文本寫入模式,用于寫入文本文件。
"at":文本追加模式,用于向文本文件末尾追加內容。

需要注意的是,在使用open()函數打開文件后,應該始終在不需要文件時關閉文件,以釋放資源。可以使用close()方法來關閉文件。

除了使用open()函數來打開文件,還可以使用with語句來自動管理文件的打開和關閉,可以避免忘記關閉文件的問題:

file = open("path/to/file.txt", "r")
content = file.read()
file.close()
# 兩種寫法效果一樣,下方寫法不用再手動關閉文件,在with代碼塊結束時會自動關閉文件
with open("path/to/file.txt", "r") as file:content = file.read()print(content)

with語句塊中,文件對象在with塊的范圍內有效,并在with塊結束時自動關閉文件。這樣可以確保文件在使用完畢后正確關閉。

2.3 常用的文件操作

1.打開文件:使用open()函數打開一個文件。可以指定文件的名稱和打開模式(讀取模式、寫入模式等)。

file = open("filename.txt", "r")  # 以只讀模式打開文件

2.讀取文件內容:使用read()readline()readlines()方法讀取文件的內容。

content = file.read()      # 讀取整個文件
line = file.readline()    # 讀取一行內容
lines = file.readlines()  # 讀取所有行的內容并返回一個列表

3.寫入文件:使用write()方法向文件中寫入內容。寫入的時候需要注意文件打開的模式是否是二進制讀寫模式,以此來判斷是否需要將寫入的內容進行二進制轉換。

file.write("Hello, World!")  # 在文件中寫入內容

4.關閉文件:使用close()方法關閉文件,釋放資源。

file.close()  # 關閉文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38828.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【學會動態規劃】環形子數組的最大和(20)

目錄 動態規劃怎么學? 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后: 動態規劃怎么學? 學習一個算法沒有捷徑,更何況是學習動態規劃, 跟我…

CSS 兩欄布局和三欄布局的實現

文章目錄 一、兩欄布局的實現1. floatmargin2. flaotBFC3. 定位margin4. flex 布局5. grid布局 二、三欄布局的實現1. float margin2. float BFC3. 定位 margin(或者定位BFC)4. flex布局5. 圣杯布局6. 雙飛翼布局 一、兩欄布局的實現 兩欄布局其實就是左側定寬,…

高層建筑全景vr火災隱患排查模擬培訓軟件助力群眾防范火災傷害

隨著城市化進程的加快,樓宇建筑的數量也在不斷增加。然而,樓宇消防安全問題也日益突出。為了提高樓宇員工和居民的消防安全意識,樓宇VR消防安全教育培訓應運而生。VR安全培訓公司深圳華銳視點制作的樓宇vr消防安全教育培訓,包括消…

谷粒商城第十一天-完善商品分組(主要添上關聯屬性)

目錄 一、總述 二、前端部分 2.1 改良前端獲取分組列表接口及其調用 2.2 添加關聯的一整套邏輯 三、后端部分 四、總結 一、總述 前端部分和之前的商品品牌添加分類差不多。 也是修改一下前端的分頁獲取列表的接口,還有就是加上關聯的那一套邏輯,…

nginx負載均衡與反向代理與正向代理

負載均衡:通過反向代理來實現 正向代理的配置方法。 正向代理: 工作原理:用戶端直接訪問不了,需要通過代理服務器來訪問web服務器,用戶端先訪問代理服務器,再訪問web服務器。web服務器響應給代理服務器&a…

【C語言】調試技巧

目錄 一、什么是bug? 二、調試 1.一般調試的步驟 2.Debug 和 Release 三、調試環境準備 四、調試時要查看的信息 1.查看臨時變量的值 2.查看內存信息 3.查看調用堆棧 4.查看反匯編信息 5.查看寄存器 五、練習 六、常見的coding技巧 七、const的作用 八、編程常見…

Linux - MongoDB 數據庫自動退出服務問題/閃退

問題:MongoDB 自動退出服務問題 原因: 由于 Mongodb 服務,使用過多系統內存,導致系統強制停止 Mongodb 服務。 解決方法: 在 mongodb.conf 配置文件內,添加新配置內容: wiredTigerCacheSi…

POI與EasyExcel--寫Excel

簡單寫入 03和07版的簡單寫入注意事項: 1. 對象不同:03對應HSSFWorkbook,07對應XSSFWorkbook 2. 文件后綴不同:03對應xls,07對應xlsx package com.zrf;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import …

如何應用項目管理軟件進行敏捷開發管理

敏捷開發(Agile Development)是一種軟件開發方法論,強調在不斷變化的需求和環境下,通過迭代、協作和自適應的方式來開發軟件。敏捷方法的目標是提供更快、更靈活、更高質量的軟件交付,以滿足客戶需求并實現項目成功。 …

服務器數據恢復-EqualLogic存儲RAID5數據恢復案例

服務器數據恢復環境: 一臺DELL EqualLogic存儲中有一組由16塊SAS硬盤組建的RAID5陣列。存儲存放虛擬機文件,采用VMFS文件系統,劃分了4個lun。 服務器故障&檢測&分析: 存儲設備上有兩個硬盤指示燈顯示黃色,存儲…

【Windows 常用工具系列 6 -- CSDN字體格式(字體、顏色、大小)、背景色設置】

文章目錄 背景字體大小設置字體顏色設置字體類型背景色 上篇文章:Windows 常用工具系列 5 – Selenium IDE的使用方法 下篇文章:Windows 常用工具系列 7 – 禁用win10自帶的微軟輸入法 背景 Markdown是一種輕量級標記語言,它的目標是實現“…

1022.從根到葉的二進制之和

目錄 一、題目 二、代碼 一、題目 二、代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

基于java計算機類考研交流平臺設計與實現

摘要 高校的大學生考研是繼高校的高等教育更上一層的表現形式,教育的發展是我們社會的根本,那么信息技術的發展又是改變我們生活的重要因素,生活當中各種各樣的場景都存在著信息技術的發展。信息技術發展WEB信息化的到來讓人們的生活感受到了…

vue項目的實用性總結

1、mockjs 基本使用 ★ 安裝:npm i mockjs。 在src/mock/index.js內容如下: import Mock from mockjs //制訂攔截規則 Mock.mock(http://www.0313.com,get,你好啊)記得在main.js中引入一下,讓其參與整個項目的運行。 只要發出去的是get類型…

家紡行業小程序商城搭建指南

家紡行業作為一個不可或缺的消費領域,近年來備受關注。隨著互聯網的發展,小程序商城成為家紡行業拓展市場的新利器。搭建一個家紡行業小程序商城并不是一件困難的事情,只需要按照以下幾個步驟進行操作,就能輕松上手。 首先&#x…

Java后端框架模塊整合

提示:使用Java后端開發框架能夠提高開發效率、代碼質量,提升可擴展性,降低開發成本和易于維護。 文章目錄 前言MyBatis 框架知識Spring 框架知識SpringMVC 框架知識SpringBoot 框架知識 前言 提示:這里可以添加本文要記錄的大概內…

2023-08-15 LeetCode每日一題(字符串中的查找與替換)

2023-08-15每日一題 一、題目編號 833. 字符串中的查找與替換二、題目鏈接 點擊跳轉到題目位置 三、題目描述 你會得到一個字符串 s (索引從 0 開始),你必須對它執行 k 個替換操作。替換操作以三個長度均為 k 的并行數組給出:indices, sources, tar…

UI設計師個人工作總結范文

UI設計師個人工作總結范文篇一 感受到了領導們“海納百川”的胸襟,感受到了作為廣告人“不經歷風雨,怎能見彩虹”的豪氣,也體會到了重慶廣告從業人員作為拓荒者的艱難和堅定(就目前國內廣告業而言,我認為重慶廣告業尚在發展階段并…

FreeRTOS(獨立看門狗監測任務執行與低功耗Tickless模式)

資料來源于硬件家園:資料匯總 - FreeRTOS實時操作系統課程(多任務管理) 目錄 一、獨立看門狗介紹 二、看門狗監測多任務執行思路 1、監測目標 2、監測方案 3、應用注意事項 三、看門狗監測多任務編程 1、STM32cubeMX配置 2、代碼編寫 四、低功耗Tickless模…

LeetCode 熱題 100 JavaScript--739. 每日溫度

給定一個整數數組 temperatures ,表示每天的溫度,返回一個數組 answer ,其中 answer[i] 是指對于第 i 天,下一個更高溫度出現在幾天后。如果氣溫在這之后都不會升高,請在該位置用 0 來代替。 示例 1: 輸入: temperat…