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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...