Python 入門之 文件

来源:https://www.cnblogs.com/caiyongliang/archive/2019/08/29/11428830.html
-Advertisement-
Play Games

Python 入門之 文件 1、文件操作 找到文件位置 雙擊打開 進行一些操作 r—read(讀) w—write(寫) a—追加 rd 讀位元組 wd 清空寫,寫位元組 ad 追加寫(位元組) r+ 讀寫 w+ 寫讀 a+ 追加讀 關閉文件 open() : 打開 ,open通過python控制操作系統 ...


Python 入門之 文件

1、文件操作

找到文件位置

雙擊打開

進行一些操作

r—read(讀) w—write(寫) a—追加
rd--讀位元組 wd--清空寫,寫位元組 ad --追加寫(位元組)

r+ -- 讀寫 w+ --寫讀 a+ -- 追加讀

關閉文件

open() : 打開 ,open通過python控制操作系統進行打開文件

open("t1","r",encoding="utf-8") //Open(“文件的路徑”,”進行的操作”,”文件的編碼形式”)

file 文件的位置

mode 預設不寫就是r

encoding 文件的編碼

f 文件句柄

文件只能讀取一次

(1)讀操作

<1> r -- 讀

f = open("D:\Python_s25\day08\小姐姐電話號",mode="r",encoding="utf-8")print(f.read())   # 全部讀取
print(f.read(3))  # 按照字元讀取
print(f.readline())  # 預設尾部有一個\n
print(f.readline().strip())  # 讀取一行
print(f.readline().strip())  # 將\n去除
print(f.readlines()) #一行一行讀取,全部存儲在列表中

路徑:

絕對路徑:從磁碟(c盤)開始查找

相對路徑:相對於某個路徑文件進行查找

路徑的轉義:

1."D:\\Python_s25\\day08\\t1"
2.r"D:\Python_s25\day08\t1"   -- 推薦使用

<2> rb -- 讀位元組:

f = open("timg.jpg",mode="rb")
print(f.read())      # 全部讀取
print(f.read(3))     # 按照位元組讀取
print(f.readline())  # 按照行進行讀取
print(f.readlines())

r和 rb的區別:

1.r需要指定encoding,rb不需要 (位元組操作,不能指定encoding)

2.r模式中的read(3) 按照字元讀取, rb模式中的read(3) 按照位元組讀取

read 和 readlines 如果文件較大時,會出現記憶體溢出

解決方案:當文件較大時,使用for迴圈進行讀取(只是展示了一下)

面試題:

f = open('t1',mode="r",encoding="utf-8")
    for i in f:   
        print(i.strip())

(2)寫操作:

<1> w -- 清空寫(寫的是文本)

先清空文件(在打開文件時進行清空)
寫入內容

當模式為w 和 a 時,有文件就是用當前文件,沒有文件就創建一個文件

ff = open("a1",mode="w",encoding="utf-8")
ff.write("123")  # 寫的內容必須是字元串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("我是一個字元串串")  # 寫的內容必須是字元串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("[1,2,3,4]\n")  # 寫的內容必須是字元串
ff.write('1111\n')  # 寫的內容必須是字元串
ff.write('2222\n')  # 寫的內容必須是字元串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("[1,2,3,4]\n")  # 寫的內容必須是字元串
ff.write('1111\n')  # 寫的內容必須是字元串
ff.write('2222\n')  # 寫的內容必須是字元串

<2> wb -- 清空寫(寫位元組)

f = open('timg.jpg',mode="rb")
f1 = open("g1.jpg",mode="wb")
content = f.read()
f1.write(content)

(3)追加操作:

<1> a -- 追加寫(文本)

f = open("b1",mode="a",encoding="utf-8")
f.write("你好啊\n")
f.write("我好啊\n")
f.write("他好啊\n")
f.write("大家好啊\n")

<2> ab -- 追加寫(位元組)

(4)+操作:

<1> r+ 讀寫(有點用)

坑 -- 使用方式是錯誤
f = open("b1",mode="r+",encoding="utf-8")
f.write("今天是周一")    # write是清空寫
print(f.read())
正確的操作:
f = open("b1",mode="r+",encoding="utf8")
print(f.read())
f.write("今天是周一")

<2> w+ 寫讀(有點用)

f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0)  # 移動游標
print(f.read())
f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0)  # 移動游標
f.write("啊啊啊啊啊啊")
f.seek(0)
print(f.read())

<3> a+ 追加讀

f = open("b1",mode="a+",encoding="utf-8")
f.write("今天是周一")
f.seek(0)  # 移動游標
f.write("啊啊啊啊")
print(f.read())

(5)其他操作:

<1> 移動游標 : seek()

seek() 移動游標
f.seek(0,0)  # 移動游標到文件的頭部
f.seek(0,1)  # 移動游標到當前位置
f.seek(0,2)  # 移動游標到文件末尾
f.seek(6)   # 移動6個位元組。游標是按照位元組移動

f = open("a1","r",encoding="utf-8")
print(f.read(5))
f.seek(0,0)  # 移動游標到文件的頭部
f.seek(0,1)  # 移動游標到當前位置
f.seek(0,2)  # 移動游標到文件末尾
print(f.read())
f = open("c1","r",encoding="gbk")
f.seek(6)   # 游標是按照位元組移動
print(f.read(3))

<2> 查看游標: tell -- 查游標

tell 查游標
f = open("c1","r",encoding="gbk")
print(f.read(3))
print(f.tell())  # 按照位元組進行計算

<2> 修改文件: import os #操作系統交互的介面

f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:    
    i = i.replace("日","天")                                  
    f1.write(i) 
f.close()
f1.close()
os.remove("a2")   # 刪除不能找回
os.rename("a1","a2")

f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:    
    i = i.replace("天","日")  
    f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")

<3>With open

自動關閉文件
同一時間操作多個文件

考點:

import os  # 操作系統交互的介面
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
i = f1.read().replace("天","日")    # 將文件中全部內容讀取 容易導致記憶體溢出f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")
with open("a3","r",encoding="utf-8")as f,\                      
        open('a2',"r",encoding="utf-8")as f1:    
    print(f.read())    
    print(f1.read())

2、文件操作的目的:

持久化:永久存儲


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著在Andriod設備上使用UHF讀寫器變得越來越廣泛,友我科技獨立研發了UHF讀寫器的android開發包,使用此開發包,工程師只需在工程中導入jar包,使用java語言就可以輕鬆的開發出Android下的UHF讀寫器應用APP。支持jar包的UHF讀寫器有YW-602H。 在jar介面包里,包 ...
  • ### 前言 回顧: [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源碼解析(1)-OkHttpClient分析](https://www.jianshu.com/p/bf1d01b79ce7) [Okhttp3源碼解析( ...
  • google Chrome瀏覽器不支持ocx,也就不能通過ocx來連接UHF讀寫器,只能使用RFID讀寫器雲服務插件,通過javascript語言來連接和操控UHF讀寫器YW-602H。RFID讀寫器雲服務插件他不僅支持Chrome瀏覽器,也支持Firefox,IE,Safari,Opera等等主流 ...
  • $.ajax 完整參數 jquery中的ajax方法參數 url: 要求為String類型的參數,(預設為當前頁地址)發送請求的地址。 type: 要求為String類型的參數,請求方式(post或get)預設為get。註意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支持 ...
  • 一、 Vue 的介紹 1. vue是一個 mvvm 的框架。(面試官經常會問的),angular 是 mvc的框架。 2. vm 是 vum 的實例,這個實例存在電腦記憶體中,主要乾兩件大事: 1. 綁定數據 2. dom檢測 3. vue 實例 靠 new 關鍵字實例化 vue 對象,使用 mvv ...
  • 微信小程式的功能變數名稱需要備案,但是沒有大陸的伺服器,而且覺得備案有些繁瑣,起初做的小程式都有點想要放棄了,後來瞭解到騰訊雲的雲函數,於是利用騰訊雲的雲函數實現了一個簡單的 API 網關,通過雲函數來調用真正的 API 地址,藉此來繞過功能變數名稱備案的問題。 ...
  • 前言 前陣子有網友詢問,如何優化網站?這個問題真的很大,跟他簡單的聊了一下,隨便說了幾點,覺得有必要整理一篇文章出來,正好前陣子在做爬蟲博客,於是把大體思路分享出來,與大家互通有無,共同進步。 優化 版本一 系統開始是這樣子的,一個 Tomcat 拖著一個 MySql 服務,跑在一個 2C 4G 的 ...
  • 偷偷和你們說,我搞了一份內部資料,該內部資料共有13張PPT,據作者透露,該PPT至少花了整整1周時間才編寫完成,其內容簡潔明瞭,內容深度足夠,易於初學者理解,也給深度開發人員分享了不一樣的消息隊列的玩法。特別重要的是,該架構目前已大面積的穩定應用於生產環境。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...