python中的文件

1.什么是文件?

硬盤上存儲的數據都是以文件的形式來組織的~

文件是數據在硬盤上的存儲形式,不同的數據在硬盤上的存儲形式是不同的,

2.文件路徑

文件夾/目錄。

文件夾,再包含文件夾的情況,這就是一個嵌套的關系,

此處把這一層一層的目錄構成的字符串,就稱為“文件的路徑”

為了表示qq.exe這個文件的位置,就可以通過路徑的方式來表示。

在代碼中兩個反斜杠才代表一個字符\

在代碼中一個反斜杠表示的是特定含義的轉義字符~

3.文件操作

1.打開文件

open函數的返回值是一個文件對象,此處的f相當于是file的縮寫,表示這個函數的返回值是一個文件對象,

當使用print函數去輸出f,就是輸出open函數的結果是,會發現這時會顯示文件的路徑,文件的打開方式,以及文件的編碼方式,當使用print(type(f))去打印open函數的結果類型時,會發現python內部給這個文件起了一個名字。

當文件不存在時,按照讀方式打開文件,就會拋出文件沒找到的異常。

重點理解open函數的返回值是什么?

對文件對象的操作都會直接反映到硬盤上,

2.關閉文件

文件在打開完之后,使用完了之后,也就一定要關閉!

打開文件,其實是在申請一定的系統資源~

不再使用文件的時候,資源就應該及時釋放

否則就可能造成文件資源泄露,進一步的導致其他部分的代碼無法順利打開文件了

正是因為一個系統的資源是有限的,因此一個程序能打開的文件的個數,也是有上限的!

在8189+3=>8192的過程中,這默認打開的三個文件是標準輸入,標準輸出,標準錯誤,

每個程序在啟動的時候,都會默認打開三個文件~

1.標準輸入, 鍵盤 input

2.標準輸出,顯示器 print

3.標準錯誤,顯示器?

文件資源泄露,其實是一個挺重要的問題~

不會第一時間暴露出來,而是在角落里,冷不丁偷襲一下,~

3.寫文件

如上圖所示,如果使用讀的方式去往文件中編寫內容,會直接拋出異常。

如上圖所示,如果使用寫的方式打開文件,不去寫也不去進行任何的操作,會直接清空文件中的原本內容。

如果想在文件中追加內容并且原本文件中就有內容,就要使用a的方式去以追加的形式往文件中添加內容。

當然了如果想加入換行的效果,就需要在f.write("464"\n)加入換行符即可,這樣讓文件內容看起來更加簡潔。

如上圖所示,如果當文件對象已經被關閉時,那么意味著系統中該文件相關的內存資源已經釋放了,強行去寫,就會出異常。

4.讀文件

如上圖所示,python代碼嘗試將文件中的數據按照一個GBK的方式去解析,結果發現解析不了,?

如何指定讓代碼以utf8的方式去解析文件中的數據信息呢?

就是在open函數中添加encoding=“utf8”這個關鍵字參數,指定open函數以utf8的形式去讀取文件中的信息。

實際開發的過程中就需要保證,文件內容的編碼方式和代碼中操作文件的編碼方式,匹配!

相比于GBK,utf8是更廣泛的編碼方式。

如上圖所示,更加常見的需求是按行來讀取文件內容,

最簡單的方法,直接是使用for循環。

for line in f :

? ? print(f'line = {line}')

然后記得要關閉文件,歸還占用的文件資源哦!

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

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

相關文章

2024-2025年本田維修電路圖線路圖接線圖資料更新

此次更新了2024-2025年本田車系電路圖資料,覆蓋市面上99%車型,包括維修手冊、電路圖、新車特征、車身鈑金維修數據、全車拆裝、扭力、發動機大修、發動機正時、保養、電路圖、針腳定義、模塊傳感器、保險絲盒圖解對照表位置等等! 汽修幫手汽…

Java中使用arima預測未來數據

看著已經存在的曲線圖數據,想預估下后面曲線圖的數據。 import java.util.Vector;public class AR {double[] stdoriginalData{};int p;ARMAMath armamathnew ARMAMath();/*** AR模型* param stdoriginalData* param p //p為MA模型階數*/public AR(double [] stdori…

你的硬盤知道的太多:你以為你的秘密真的被刪除了嗎?

某一天你收到了朋友發給你的一個秘密文件,在看完之后,為了不被別人發現,你決定將文件毀尸滅跡! 你選中文件名稱 / 右鍵 / 刪除,好了,文件已經消失了。但你是懂電腦的,知道文件此時還在回收站里面…

Ozon/Noon/Temu/TK Shop如何多店鋪經營免受關聯封號?

許多商家和個人都面臨著多店鋪經營免受關聯封號的挑戰。特別是在像Ozon、Noon、TEMU以及TikTok Shop等平臺上,如何有效管理多個店鋪并避免關聯封號成為關鍵問題。 一、多店鋪經營防關聯封號的重要性: 在多店鋪經營過程中,如果平臺檢測到多個…

海外虛擬卡開卡平臺有哪些?無限開卡,無其他限制

隨著時代的發展很多小伙伴都需要海外虛擬卡,海外虛擬卡開卡平臺我這里用的是Fomepay的,他們比較人性化,有客服,隨時可咨詢 對于消費者而言,虛擬卡號提供了隱私,因此廣告商更難以跟蹤和定位購買行為&#x…

PyQt5入門教程:從安裝到構建簡單應用

PyQt5入門教程:從安裝到構建簡單應用 簡介 PyQt5是一個功能強大的Python綁定庫,用于Qt應用程序框架。它允許我們使用Python語言快速開發跨平臺的桌面應用程序。本教程將引導你完成PyQt5的安裝、配置,并帶你創建一個簡單的圖形用戶界面&…

《python程序語言設計》2018版第5章第50題利用turtle編程顯示三角形圖案

2024.06.18 05.50.01version 首先我覺得還是應該現從簡單陣列來進行。非常簡單。順便回憶一下我3月份做的5.19題里那些淘氣的數列 代碼成功 #將i從10設計成12打印的畢竟好看 for i in range(1,12):#這這里給結尾的i2效果并不好看for j in range(1,i):print(j,end" "…

【深度學習】Transformer

李宏毅深度學習筆記 https://blog.csdn.net/Tink1995/article/details/105080033 https://blog.csdn.net/leonardotu/article/details/135726696 https://blog.csdn.net/u012856866/article/details/129790077 Transformer 是一個基于自注意力的序列到序列模型,與基…

軟件測試與質量保證 | 云班課選擇題庫

目錄 第1章課后習題 第2章課后習題 第3章課后習題 第4章課后習題 第5章課后習題 第6章課后習題 第7章課后習題 第8章課后習題 第9章課后習題 第10章課后習題 第11章課后習題 第12章課后習題 第13章 測試相關未分類習題 第1章課后習題 1. 與質量相關的概念包括 &a…

51單片機第26步_單片機工作在空閑模式

重點學習51單片機工作在空閑模式。 1、進入空閑模式的方法 通過將PCON寄存器中的IDLE置1,CPU就會進入空閑模式。在空閑模式中,程序停止執行,RAM中的數據仍然保持,晶振繼續工作,但與CPU斷開,定時器和串行口…

IPython調試秘籍:pdb調試器深度解析與實戰

🐞 IPython調試秘籍:pdb調試器深度解析與實戰 在Python編程中,調試是開發過程中不可或缺的一環。IPython,作為一個強大的交互式Python解釋器,內置了pdb調試器,使得代碼調試變得異常便捷。本文將深入探討如…

可充電紐扣電池ML2032充電電路設計

如圖,可充電紐扣電池ML2032充電電路設計。 圖中二極管是為了防止電流倒灌, 電阻分壓出3.66v,再減掉二極管壓降(約0.4v)得3.26V,加在電池正負極充電。 隨著電池電量的積累,充電電流逐步減小,極限…

什么樣的企業適合SD-WAN網絡專線?

SD-WAN(Software-Defined Wide Area Network,軟件定義廣域網)是一種網絡技術,它利用軟件定義的方式管理和控制廣域網(WAN),旨在提高網絡效率、降低成本并簡化網絡管理。以下是適合采用SD-WAN網絡…

服務器之BIOS基礎知識總結

1.BIOS是什么? BIOS全稱Basic Input Output System,即基本輸入輸出系統,是固化在服務器主板的專用ROM上,加載在服務器硬件系統上最基本的運行程序,它位于服務器硬件和OS之間,在服務器啟動過程中首先運行&am…

C語言在QC工作當中的應用

一、引入 在質量控制(Quality Control,簡稱QC)工作中,C語言的應用可能并不像在一些其他領域(如嵌入式系統開發、游戲開發等)中那么直接,但C語言仍然可以在多個方面為QC提供支持。以下是一些C語…

擺脫冗雜賦值(一)——巧用序列化反序列化及BeanUtils反射等工具解決開發時對象、集合、字符串等多種形式間相互轉換的方法及技巧

1、將Java對象轉換為JSON字符串 當我們需要將Java對象轉換為JSON字符串時,可以使用JSON.toJSONString()方法。下面是一個簡單的例子,展示如何使用JSON.toJSONString()將一個Java對象轉換為JSON字符串: import com.alibaba.fastjson.JSON;pu…

HUAWEI MPLS 靜態配置和動態LDP配置

MPLS(Multi-Protocol Label Switching,多協議標簽交換技術)技術的出現,極大地推動了互聯網的發展和應用。例如:利用MPLS技術,可以有效而靈活地部署VPN(Virtual Private Network,虛擬專用網),TE(Traffic Eng…

Rust 進階教程

Rust 進階教程 在基礎教程中,我們已經了解了Rust的基本語法和核心概念。本文將進一步探討Rust的進階特性和應用,包括泛型、閉包、迭代器、異步編程、宏和unsafe代碼等。 目錄 泛型閉包和迭代器 閉包迭代器 異步編程宏Unsafe代碼FFI(外部函…

pdf怎么拆分成一頁一頁?4種拆分方法分享

在日常的辦公學習中,PDF文檔因其跨平臺、易閱讀、不易篡改等特性,成為我們工作和學習中不可或缺的一部分。然而,當我們需要對PDF進行編輯、打印或分享時,有時需要將整個PDF文檔拆分成一頁一頁的單獨文件。那么,如何高效…

深入理解Vue生命周期鉤子函數

深入理解Vue生命周期鉤子函數 Vue.js 是一款流行的前端框架,通過其強大的響應式數據綁定和組件化的開發方式,使得前端開發變得更加簡單和高效。在Vue應用中,每個組件都有其生命周期,這些生命周期鉤子函數允許開發者在不同階段執行…