【Python】Python文件操作

Python文件操作

文章目錄

      • Python文件操作
    • @[toc]
        • 1.文件的編碼
        • 2.文件打開、讀取(r模式)、關閉
        • 3.文件的寫入(w模式)
        • 4.文件的追加寫入(a模式)
        • 5.綜合案例

1.文件的編碼
  • 意義:計算機只能識別0和1,計算機使用編碼技術將豐富文本文件的內容翻譯成0和1存入,同時也需要編碼將計算機保存的0和1反向翻譯回可以識別的內容。計算機有許多可用編碼,例如UTF-8、GBK、Big5等。不同的編碼,將內容翻譯成二進制也是不同的。UTF-8是目前全球通用的編碼格式。

2.文件打開、讀取(r模式)、關閉
  • 打開文件:open(name,mode,encoding),name是要打開的目標文件名的字符串(文件的具體路徑),mode是設置打開文件的模式(訪問文件的模式):只讀、寫入、追加等,encoding是編碼格式(推薦使用UTF-8)。使用該函數,可以打開一個已經存在的文件或者創建一個新文件。

    幾種訪問文件的模式:

模式描述
r以只讀方式打開文件,文件的指針將會放在文件的開頭,這是默認模式
w以寫入的模式打開文件,如果該文件已經存在則打開該文件,并從頭開始編輯,原有內容會被刪除,如果該文件原先不存在,則創建新文件。
a打開一個文件用于追加。如果該文件存在,新的內容將會被寫到已有內容之后,如果該文件不存在,創建新文件進行寫入。
  • 文件的打開、讀取、關閉操作
操作功能
文件對象 = open (file, mode, encoding)打開文件獲得文件對象
文件對象.read (num)讀取指定長度字節,不指定 num 讀取文件全部
文件對象.readline ()讀取一行,多寫幾個就是依次讀取
文件對象.readlines ()讀取全部行,封裝得到列表
for line in 文件對象for 循環文件行,一次循環得到一行數據
文件對象.close ()關閉文件對象
with open() as f通過 with open 語法打開文件,自動創建文件對象,并可以自動關閉文件
# 每個example.txt文件都是
'''
1234567
abcdefg
8910
hijk
'''# 打開文件,open("文件路徑", "讀取方式", encoding="編碼類型")
f = open("D:/pythonlearning/example.txt", "r", encoding="UTF-8")
print(type(f))
print(20 * "*")# 讀取文件,文件對象.read(num),讀取文件的前num個字節,若沒有傳入num,則讀取全部
print(f.read(10))
print(f.read())   # 接著上面的f.read(10)讀
print(20 * "*")# 讀取文件,文件對象.readlines(),讀取文件每一行,封裝為列表
print(f.readlines())     # 同樣也是接著上面繼續讀,所以輸出結果是個空列表
k = open("D:/pythonlearning/example1.txt", "r", encoding="UTF-8")
print(k.readlines())     # 讀取一個全新的文件,把每一行分割,封裝為列表
print(20 * "*")# 讀取文件,文件對象.readline(),使用一次讀取一行
g = open("D:/pythonlearning/example2.txt", "r", encoding="UTF-8")
line1 =g.readline()
line2 =g.readline()
line3 =g.readline()
print(line1)
print(line2)
print(line3)
print(20 * "*")# 用for循環讀取文件行
m = open("D:/pythonlearning/example3.txt", "r", encoding="UTF-8")
for line in m:print(line)
print(20 * "*")# 關閉文件,文件對象.close()。關閉程序對文件的占用# with open語法:with open("文件路徑", "讀取方式", encoding="編碼類型") as 文件對象:,可以自動創建文件對象以及自動關閉文件
with open("D:/pythonlearning/example4.txt", "r", encoding="UTF-8") as n:for line in n:print(line)# 輸出結果
'''
<class '_io.TextIOWrapper'>
********************
1234567
ab
cdefg
8910
hijk
********************
[]
['1234567\n', 'abcdefg\n', '8910\n', 'hijk']
********************
1234567abcdefg8910********************
1234567abcdefg8910hijk
********************
1234567abcdefg8910hijk
'''

練習

exercise.txt文件如下,要求統計hello這個單詞出現的次數

hello hi hello good
if while hello yes hello hello
yes good hello
hello
hello

f = open("D:/pythonlearning/exercise.txt", "r", encoding="UTF-8")
k = 0
for line in f:my_str = line.strip("\n")   # 刪除首尾可能出現的換行符my_str = my_str.strip(" ")  # 刪除首尾可能出現的換行符new_list = my_str.split(" ")  # 分隔,成為列表k += new_list.count("hello")
print(k)
f.close()# 輸出結果
'''
8
'''

3.文件的寫入(w模式)
  • 寫入內容:文件對象.write(寫入的內容)
  • 文件內容刷新:文件對象.flush()直接調用write,內容并沒有真正寫入文件,而是會積攢在程序的內存中,稱之為緩存區,這時候需要調用flush,內容才會真正寫入文件。這么做是為了避免頻繁操作硬盤,導致效率下降(攢一起,一次性寫入)
# 創建一個新的文件,并進行寫入操作
f = open("D:/pythonlearning/1.txt", "w", encoding="UTF-8")  # 寫入模式“w”
f.write("hello world")
f.flush()  # 刷新內容
f.close()  # close函數有內置flush刷新功能,關閉的同時也對文檔進行了更新# 打開一個已經存在的文件,并進行寫入操作
g = open("D:/pythonlearning/example.txt", "w", encoding="UTF-8")  # 寫入模式“w”,會把已有文件全部清空
g.write("hello world")
f.close()# example文件結果
'''
hello world
'''

4.文件的追加寫入(a模式)
# 創建一個新的文件,并進行追加寫入操作
f = open("D:/pythonlearning/2.txt", "a", encoding="UTF-8")  # 追加寫入模式“a”
f.write("hello world")
f.flush()  # 刷新內容
f.close()  # close函數有內置flush刷新功能,關閉的同時也對文檔進行了更新# 打開一個已經存在的文件,并進行寫入操作
g = open("D:/pythonlearning/example1.txt", "a", encoding="UTF-8")  # 追加寫入模式“a”,在已有內容后面繼續加內容
g.write("\nhello world")
f.close()# example1文件結果
'''
1234567
abcdefg
8910
hijk
hello world
'''

5.綜合案例

exercise1.txt文件如下:

name,date,money,type,remarks
周倫,2022-01-01100000,消費,正式
周倫,2022-01-02,300000,收入,正式
周倫,2022-01-03,100000,消費,測試
林節,2022-01-01,300000, 收入,正式
林節,2022-01-02,100000, 消費,測試
林節,2022-01-03,100000, 消費,正式
林節,2022-01-04,100000, 消費,測試
林節,2022-01-05,500000, 收入,正式
張油,2022-01-01,100000, 消費,正式
張油,2022-01-02,500000, 收入,正式
張油,2022-01-03,900000, 收入,測試
王鴻,2022-01-01,500000, 消費,正式
王鴻,2022-01-02,300000, 消費,測試
王鴻,2022-01-03,950000, 收入,正式
劉滑,2022-01-01,300000, 消費,測試
劉滑,2022-01-02,100000, 消費,正式
劉滑,2022-01-03,300000, 消費,正式

完成以下操作:

(1)讀取文件

(2)將文件寫出到new.txt文件

(3)同時,將文件內標記為測試的數據行丟棄

f = open("D:/pythonlearning/exercise1.txt", "r", encoding="UTF-8")
g = open("D:/pythonlearning/new.txt", "a", encoding="UTF-8")
for line in f:str1 = line.strip(" ")str_last = str1.strip("\n")new_list = str_last.split(",")if "正式" in new_list:g.write(str_last + "\n")
f.close()
g.close()# 輸出結果
'''
周倫,2022-01-01100000,消費,正式
周倫,2022-01-02,300000,收入,正式
林節,2022-01-01,300000, 收入,正式
林節,2022-01-03,100000, 消費,正式
林節,2022-01-05,500000, 收入,正式
張油,2022-01-01,100000, 消費,正式
張油,2022-01-02,500000, 收入,正式
王鴻,2022-01-01,500000, 消費,正式
王鴻,2022-01-03,950000, 收入,正式
劉滑,2022-01-02,100000, 消費,正式
劉滑,2022-01-03,300000, 消費,正式
'''
2-01-01,300000, 收入,正式
林節,2022-01-03,100000, 消費,正式
林節,2022-01-05,500000, 收入,正式
張油,2022-01-01,100000, 消費,正式
張油,2022-01-02,500000, 收入,正式
王鴻,2022-01-01,500000, 消費,正式
王鴻,2022-01-03,950000, 收入,正式
劉滑,2022-01-02,100000, 消費,正式
劉滑,2022-01-03,300000, 消費,正式
'''

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

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

相關文章

CES Asia的“五年計劃”:打造與北美展比肩的科技影響力

在全球科技產業版圖中&#xff0c;展會一直是前沿技術展示、行業趨勢探討以及商業合作達成的關鍵平臺。CES Asia&#xff08;亞洲消費電子技術展&#xff09;作為亞洲科技領域的重要展會&#xff0c;近日明確提出其“五年計劃”&#xff0c;目標是打造與北美展會比肩的科技影響…

【計算機網絡 | 第16篇】DNS域名工作原理

文章目錄3.5 域名系統工作原理主機的標識方式&#xff1a;域名 vs IP 地址標識轉換機制&#xff1a;DNS系統因特網的域名系統&#xff1a;層次域名空間&#x1f426;?&#x1f525;頂級域名分類低級域名與管理域名與IP的區別因特網的域名系統&#xff1a;域名服務器&#x1f9…

YASKAWA安川機器人鋁材焊接節氣之道

在鋁材焊接領域&#xff0c;保護氣體的合理使用對焊接質量與成本控制至關重要。安川焊接機器人憑借高精度與穩定性成為行業常用設備&#xff0c;而WGFACS節氣裝置的應用&#xff0c;則為其在鋁材焊接過程中實現高效節氣提供了創新路徑。掌握二者結合的節氣之道&#xff0c;對提…

GooseDB,一款實現服務器客戶端模式的DuckDB

在網上看到韓國公司開發的一款GooseDB&#xff0c; 官方網站對它的介紹是DuckDB? 的功能擴展分支&#xff0c;具有服務器/客戶端、多會話和并發寫入支持&#xff0c;使用 PostgreSQL 有線協議&#xff08;DuckDB?是 DuckDB 基金會的商標&#xff09; 使用也很簡單&#xff…

lesson62:JavaScript對象進化:ES2025新特性深度解析與實戰指南

目錄 一、迭代器輔助方法&#xff1a;對象數據處理的優雅革命 1.1 核心方法與語法 1.2 對象屬性處理實戰 1.3 性能與兼容性考量 二、JSON模塊原生支持&#xff1a;對象加載的范式轉變 2.1 靜態與動態導入語法 2.2 與傳統方案的對比優勢 2.3 典型應用場景 三、Set集合增…

設計模式學習筆記(一)

設計模式學習筆記&#xff08;一&#xff09; 一般說設計模式都是指面向對象的設計模式&#xff0c;因為面向對象語言可以借助封裝、繼承、多態等特性更好的達到復用性、可拓展性、可維護性。 面向對象一般指以類、對象為組織代碼的基本單元&#xff0c;并將封裝、繼承、多態、…

【CSS】一個自適應大小的父元素,如何讓子元素的寬高比一直是2:1

父元素是自適應大小的容器&#xff08;比如 width:100%&#xff09;&#xff0c;我們希望子元素 始終保持 2:1 寬高比&#xff08;比如寬 200px → 高 100px&#xff0c;寬 300px → 高 150px&#xff09;。 有幾種常見解法&#xff1a;? 方法一&#xff1a;CSS aspect-ratio&…

如何搭建redis集群(docker方式非哨兵)

1、redis的配置文件這里要注意&#xff0c;主從的ip不需要我們去設置&#xff0c;只需要設置主從的密碼就可以&#xff0c;然后就是protect-mode&#xff0c;我設置的是no&#xff0c;一定注意不能設置主從。客戶端要訪問&#xff0c;一定要加# 每個節點的 redis.conf 中 clust…

如何學習VBA_3.3.9:利用“搭積木”思想,快速有效地完成你的代碼

我給VBA的定義&#xff1a;VBA是個人小型自動化處理的有效工具。利用好了&#xff0c;可以大大提高自己的勞動效率&#xff0c;而且可以提高數據處理的準確度。我推出的VBA系列教程共九套和一部VBA漢英手冊&#xff0c;現在已經全部完成&#xff0c;希望大家利用、學習。如果您…

JSP程序設計之輸入/輸出對象 — response對象

response對象1.概述2.實例&#xff1a;response對象方法運用&#xff08;1&#xff09;實例一&#xff1a;頁面自動刷新&#xff08;2&#xff09;實例二&#xff1a;實現頁面重定向&#xff0c;具體的代碼&#xff08;3&#xff09;綜合實例&#xff1a;實現登錄并記錄用戶名1…

Redis 事件驅動框架(ae.c_ae.h)深度解析

Redis 事件驅動框架&#xff08;ae.c/ae.h&#xff09;深度解析 之前咱們用 “超市收銀員” 的例子&#xff0c;簡單看懂了 ae 模塊是 Redis 的 “多任務神器”。現在咱們再往深走一層&#xff0c;不用復雜代碼&#xff0c;只拆它的 “核心運作邏輯”—— 搞懂它怎么做到 “一個…

[能源化工] 面向鋰電池RUL預測的開源項目全景速覽

鋰離子電池是新能源汽車、儲能系統及便攜式電子設備的核心能源部件&#xff0c;其剩余使用壽命&#xff08;Remaining Useful Life&#xff0c;RUL&#xff09;的準確預測直接關系到設備運行安全、維護成本優化和能源效率提升。RUL預測算法能夠提前量化電池剩余可用時間&#x…

PEFT QLora Deepspeed Zero Stage 3 Offload Trainning

使用 accelerate deepspeed zero stage 3 offload 進行 sft trainning 的自動設備映射: GPU 訓練計算 CPU 存儲 run_peft_qlora_deepspeed_stage3.sh #!/bin/bashexport MAX_JOBS4 export OMP_NUM_THREADS4 export disable_exllamaTrue export CUDA_VISIBLE_DEVICES0,1 expor…

JAVA上門家政維修服務系統源碼微信小程序+微信公眾號+APP+H5

一、功能介紹用戶端&#xff1a;精準分類、支持家政、維修、萬能服務、一口價、報價、線上、各類家政服務、優惠專區、師傅入駐、商家入駐、我的需求、補費明細、我的投訴&#xff1b;師傅端&#xff1a;接單池、消息通知、接單管理、今日訂單、師傅入駐、我的錢包、實名認證&a…

GCKontrol對嵌入式設備FPGA設計流程的高效優化

1 前言FPGA&#xff08;Field-Programmable Gate Array&#xff0c;現場可編程邏輯門陣列&#xff09;是一種可編程的半導體器件&#xff0c;因其硬件可重構性、硬件并行計算能力、低延遲和實時性的優勢&#xff0c;廣泛應用于數字電路設計、原型驗證和系統加速等領域。但開發…

DBAPI免費版對比apiSQL免費版

DBAPI簡介 零代碼開發api服務&#xff0c;只需編寫sql&#xff0c;就可以生成http api服務。支持api動態創建&#xff0c;兼容多種數據庫。 適用于BI報表、數據可視化大屏的后端接口快速開發。 旨在為企業數據服務的發布提供完整解決方案 一、DBAPI免費版本支持1個數據源連接支…

CTFHub SSRF通關筆記8:數字IP Bypass 原理詳解與滲透實戰

目錄 一、SSRF 二、數字IP原理 1、IP多進制 &#xff08;1&#xff09;十進制整數格式 (Dword / 長整數格式) &#xff08;2&#xff09;八進制格式 (Octal IP) &#xff08;3&#xff09;十六進制格式 (Hex IP) 2、SSRF繞過 三、滲透實戰 1、打開靶場 2、嘗試127.0.…

C++中雙引號和單引號的區別(全面分析)

我在刷算法題的時候經常遇到&#xff0c;用了 出現警告或者使用" "直接報錯&#xff0c;尤其是在字符串部分&#xff08;py玩家后遺癥/(ㄒoㄒ)/~~&#xff09;在詳細了解后總結一下加強記憶。 總的來說在 C 中&#xff0c;雙引號 "" 和單引號 是完全不同…

Ubuntu20.04仿真 |iris四旋翼添加云臺相機詳述

申明&#xff1a; 1、本人使用的是Ubuntu20.04ros1gazeboxtdronepx4的仿真組合 2、為了使傳感器模型和飛機模型解耦合&#xff0c;實現不同平臺對傳感器可直接調用&#xff0c;本系列博文涉及的所有傳感器均不直接添加在相應平臺的sdf當中&#xff0c;而是通過編寫xxx_joint.…

《人工智能AI之機器學習基石》系列 第 16 篇:關聯規則與數據挖掘——“啤酒與尿布”傳奇背后的增長秘密

《人工智能AI之機器學習基石》? 專欄核心理念: 用通俗語言講清楚機器學習的核心原理,強調“洞察+ 技術理解 + 應用連接”,構建一個完整的、富有啟發性的知識體系。 引言:藏在購物車里的“讀心術” 朋友們,歡迎回到我們的AI基石之旅。 在過去的兩次探索中,我們深入…