Python文件的基本操作

来源:https://www.cnblogs.com/zhangfanshixiaobai/archive/2023/09/04/17677609.html
-Advertisement-
Play Games

# Python文件的基本操作 - 文件的基本操作 - 文件的讀寫模式 - 文件的讀寫操作相關的方法 - 文件的操作模式 - 文件的練習題 ## 文件的基本操作 ```python 1. 我們能夠操作哪些類型的文件: .txt 沒有尾碼名的文件 # 我們現在不能操作word、Excel、PPT等文件 ...


Python文件的基本操作

  • 文件的基本操作
  • 文件的讀寫模式
  • 文件的讀寫操作相關的方法
  • 文件的操作模式
  • 文件的練習題

文件的基本操作

1. 我們能夠操作哪些類型的文件:
    .txt 沒有尾碼名的文件
    # 我們現在不能操作word、Excel、PPT等文件暫時不能夠操作
    numpy、pandas等模塊可以操作
2. 如何操作文件
	"""
		三步法:
			1. 打開文件(open)
			2. 讀或者寫
			3. 關閉文件
	"""
# open('要操作的文件路徑', '讀寫模式', '字元編碼')   
文件的路徑:
	相對路徑
    絕對路徑
    'D:\Python27\day10\a.txt'
    # 當路徑中出現了字母和斜杠的組合會產生一些特殊的含義,所以我們應該給去掉:
    r'D:\Python27\day10\a.txt'
f= open(r'D:\Python27\day10\a.txt', 'r', encoding='utf-8')  # \n \t
# 返回的是文件句柄
print(f) # <_io.TextIOWrapper name='D:\\Python27\\day10\\a.txt' mode='r' encoding='utf-8'>

# 2. 讀取文件
# helloworld
print(f.read()) # 類似於是文件的內置方法

# 3. 關閉文件
f.close()


'''第二種方式來操作文件'''
# with上下文管理器打開文件!
# as:起別名
# 它的特點就在於:能夠自動關閉文件
with open('a.txt', 'r', encoding='utf-8') as f: # f=open('a.txt', 'r', encoding='utf-8')  f.close()
    print(f.read())

讀寫操作相關的方法

r(預設的):只讀
w:只寫
a:只追加寫

r模式的使用

1. 只讀模式
# 1. 讀模式
"""當文件路徑不存在的時候,會直接保存"""
# f = open('b.txt', 'r', encoding='utf-8') #  No such file or directory: 'b.txt'
# f = open('a.txt', 'r', encoding='utf-8') #  No such file or directory: 'b.txt'
# print(f.read())
# f.close()
#
# with open('a.txt', 'r', encoding='utf-8') as f:
#     print(f.read())

w模式的使用

# w只寫模式: 在文件不存在時會創建空文檔,文件存在會清空文件,文件指針跑到文件開頭
with open('b.txt',mode='w',encoding='utf-8') as f:
    f.write('你好\n')
    f.write('我好\n') 
    f.write('大家好\n')
    f.write('111\n222\n333\n')
#強調:
# 1 在文件不關閉的情況下,連續的寫入,後寫的內容一定跟在前寫內容的後面
# 2 如果重新以w模式打開文件,則會清空文件內容

a模式的使

# a只追加寫模式: 在文件不存在時會創建空文檔,文件存在會將文件指針直接移動到文件末尾
 with open('c.txt',mode='a',encoding='utf-8') as f:
     f.write('44444\n')
     f.write('55555\n')
#強調 w 模式與 a 模式的異同:
# 1 相同點:在打開的文件不關閉的情況下,連續的寫入,新寫的內容總會跟在前寫的內容之後
# 2 不同點:以 a 模式重新打開文件,不會清空原文件內容,會將文件指針直接移動到文件末尾,新寫的內容永遠寫在最後

讀寫操作相關的方法

1. 讀系列
	# 讀系列
    with open('a.txt', 'r', encoding='utf-8') as f:
        # print(f.read()) # read方法是一次性讀取文件中得所有數據
        # print(f.readline()) # helloworld1
        # print(f.readline()) # readline一次只讀文件的一行內容
        # print(f.readlines()) # 一次性讀取文件的所有內容,然後每一個內容作為列表的一個元素返回,返回的數據類型是:列表
        print(f.readable()) # able ation un multi ...	
2. 寫系列
	# 寫系列
	### 做後端程式員:最重要的是安全意識
	with open('a.txt', 'w', encoding='utf-8') as f:
        # f.write('jerry say hello ')
        # f.writelines(['hello\n', 'jerry\n', 'kevin\n', 'jason\n'])
        print(f.writable())
        print(f.readable())	

文件的讀操作的優化


with open('a.txt', 'r', encoding='utf-8') as f:
    # print(f.read()) # 一次性讀取文件的所有數據,並且游標在文件的末尾,如果在去讀,就讀不到了
    # print(f.read())
    # 文件句柄f是支持for迴圈的
    for line in f:
        # line: 就是文件的一行內容
        print(line)
    # 瞭解的方法:
    # f.flush()  # 把數據從記憶體中立刻刷到磁碟
    """
        當你讀取的數據比較小的時候,其實是在緩衝區的,當數據量夠多的時候,它會一定刷到磁碟
    """


"""
一次性讀取文件的所有數據有什麼問題:
    當數據比較多的時候,會出現記憶體溢出,這種情況是堅決不能出現的
    如何優化以上操作:
        一點一點的讀取數據然後把數據趕緊刷到硬碟里
        
"""

文件的操作模式

1. 文本模式 
	t:text
	# r w a =====> rt wt at
	"""
		with open('userinfo.txt', 'r', encoding='utf-8') as f:
		文本模式預設就是操作字元串,文本
		特征:
			1. encoding參數必須指定
			2. 讀取的所有的數據都是以字元串為單位的
			3. t模式只能夠讀取文本或者字元模式
	"""
2. 二進位模式
	b模式:binary
    with open('userinfo.txt', 'rb') as f:
    """
    	b模式中得b不能省略------------> rb wb ab
    	特征:
    		1. encoding='utf-8'參數不能夠指定
    		2. 讀取的數據全部以位元組為單位
    		3. 二進位模式可以讀取任意類型的文件
    """


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

-Advertisement-
Play Games
更多相關文章
  • ## 返回值優化RVO 在cppreference中,是這麼介紹RVO的 `In a return statement, when the operand is the name of a non-volatile object with automatic storage duration, wh ...
  • 背景: 最近在寫一個介面的時候,需求是這樣的,上傳excel,匹配項目有多少個欄位匹配上了,如果匹配上了在單元格上標註綠色背景,然後返回excel文件和匹配的詳細。 首先這個excel文件,後端是不會去保存的,所以無法直接返迴文件鏈接,然後需要返回一個json,告訴前端有多少行是匹配上了的,中匹配多 ...
  • # 02-針對商品排行榜,你是怎麼實現的 ## 背景描述 當時產品提出了每日熱銷排行榜在零點進行變更的需求。在我接到這個需求後,我立即想到了使用Redis的有序集合(ZSET)來實現這個功能,並與我們的技術負責人進行了溝通。 經過與技術負責人的討論和確認,我們一致認為使用有序集合是一個可行的解決方案 ...
  • ## switch語句 使用switch語句來選擇要執行的多個代碼塊中的一個。 在Go中的switch語句類似於C、C++、Java、JavaScript和PHP中的switch語句。不同之處在於它只執行匹配的case,因此不需要使用break語句。 單一case的switch語法 ```Go sw ...
  • ## 1、條件變數 當線程需要等待特定事件發生、或是某個條件成立時,可以使用條件變數`std::condition_variable`,它在標準庫頭文件``內聲明。 ```c++ std::mutex mut; std::queue data_queue; std::condition_variab ...
  • # 學習Markdown Typora初體驗 ## 標題 語法:`#+空格+標題+回車`。幾級標題就有幾個#號。 ### 三級標題 #### 四級標題 ##### 五級標題 ###### 六級標題 ####### 七級標題。。。我沒有 ## 字體 *斜體* 語法: $$ *內容* $$ **加粗** ...
  • # 第一章HTML #### 1.1 html的定義 html是超文本標記語言,是一個基於HTTP(超文本傳輸協議)協議的網頁語言 #### 1.2 html的版本 HTML 4.01 以及具備完善的網頁編輯 HTML 5.0 移動端網頁編輯 XHTML 語法嚴格 #### 1.3 瀏覽器 保障相容 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 本文是《LeetCode952三部曲之三 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...