python(open文件讀取)

来源:https://www.cnblogs.com/Mr-ZY/archive/2019/10/24/11734995.html
-Advertisement-
Play Games

一.open文件讀取 1.open('file','mode')打開一個文件 file 要打開的文件名,需加路徑(除非是在當前目錄) mode 文件打開的模式 需要手動關閉close 2.with open('file','mode')as... 不需要手動關閉文件 3.'r': 以只讀模式打開(默 ...


一.open文件讀取

1.open('file','mode')打開一個文件

  • file  要打開的文件名,需加路徑(除非是在當前目錄)
  • mode  文件打開的模式
  • 需要手動關閉close

2.with open('file','mode')as...

  • 不需要手動關閉文件

 3.'r': 以只讀模式打開(預設)(必須保證文件存在)

  • 文件名中出現漢字時,需在括弧內加 u 就不會出現報錯IOError
    file1 = open("D:\新方碩.txt","r")
    print file1.read()
    file1.close()
    
    file1 = open(u"D:\新方碩.txt","r")
    #文件內中文為手動輸入,則需轉碼
    print file1.read().decode('gbk').encode('utf-8')
    file1.close()

      

  • read(size) 讀取所有
    •   返回字元串
    •        括弧接讀取 size 位元組
      #read()不傳參數時預設讀取所有
      file1 = open(u"D:\新方碩.txt","r")
      print file1.read()
      file1.close()
      
      #read(3)括弧內參數3代表位元組數,一個漢字3個位元組
      file1 = open(u"D:\新方碩.txt","r")
      print file1.read(3)
      file1.close()

       

  • readline()預設讀取一行
    •   返回字元串
    •   括弧內填了子節數,則按位元組讀取
      #readline()預設讀取一行
      file1 = open(u"D:\新方碩.txt","r")
      print file1.readline()
      file1.close()
      
      #readline(size)括弧內填了子節數,則按位元組讀取
      file1 = open(u"D:\新方碩.txt","r")
      print file1.readline(5)
      file1.close()

       

  • readlines()讀取所有
    •   返回列表
      file1 = open(u"D:\新方碩.txt","r")
      print str(file1.readlines()).decode('string_escape')

       

      with open('d:\\test1.txt','r') as file1:
          for i in file1.readlines():
              print i

       

備註:

  • 調用read()會一次性讀取文件的全部內容,如果文件有10G,記憶體就爆了,所以,要保險起見,可以反覆調用read(size)方法,每次最多讀取size個位元組的內容。另外,調用readline()可以每次讀取一行內容,調用readlines()一次讀取所有內容並按行返回list。因此,要根據需要決定怎麼調用。
  • 如果文件很小,read()一次性讀取最方便;如果不能確定文件大小,反覆調用read(size)比較保險;如果是配置文件,調用readlines()最方便。

 4.'w':以只寫模式打開

  • 若文件存在,則會自動清空文件,然後重新創建。
  • 若文件不存在,則新建文件。
  • 使用這個模式必須要保證文件所在目錄存在,文件可以不存在。
    file1 = open("D:\\xfs.txt","w")
    file1.write("I am python!")
    file1.close()
    #將test文件內容複製到test1中
    file1 = open('d:\\test.txt','r')
    file2 = open('d:\\test1.txt','w')
    file3 = file2.write(file1.read())
    file1.close()
    file2.close()

     

    with open('d:\\test.txt','w') as file1:
        file2 = file1.write('緣分一道橋\n歌詞\n男:\n秦時明月漢時關\n萬里長征人未還\n但使龍城飛將在\n不教胡馬度陰山\n女:\n狼煙千里亂葬崗\n'
                            '亂世孤魂無人訪\n無言蒼天筆墨寒\n筆刀春秋以血償\n男:\n談愛恨 不能潦草\n戰鼓敲啊敲\n用信任 立下誓言我來熬\n'
                            '女:\n這緣份 像一道橋\n旌旗飄啊飄\n你想走就請立馬抽刀愛一筆勾銷\n合:\n談愛恨 不能潦草\n紅塵燒啊燒\n以生死 '
                            '無愧證明誰重要\n女:\n這緣份 像一道橋\n故事瞧一瞧\n男:\n走天涯你我卸下戰袍\n合:\n夢回長城謠')

     

  • 該模式下不能使用 read*()方法。
    #報錯IOError: File not open for reading
    file1 = open("D:\\xfs.txt","w")
    file1.write("I am python!")
    print file1.read()

5.'a':以追加模式打開

  • 若文件存在,則會追加到文件的末尾。
  • 若文件不存在,則新建文件。
  • 該模式不能使用 read*()方法。
    file1 = open("D:\\xfs.txt","a")
    file1.write("我愛HTML")
    file1.close()

6.seek()指針從哪裡開始寫入

file.seek(offset[, whence])
  • offset -- 開始的偏移量,也就是代表需要移動偏移的位元組數

  • whence:可選,預設值為 0。給offset參數一個定義,表示要從哪個位置開始偏移;0代表從文件開頭開始算起,1代表從當前位置開始算起,2代表從文件末尾算起。

#表示從第三個子節後開始讀取

file1 = open(u"D:\\新方碩.txt","r")
file1.seek(3)
print file1.read(3)
file1.close()

 

data = open("d:\\test.txt","r")

data.seek(-15,2)
print data.read()
data.close()

 

 

7.'r+': 以文本讀寫模式打開

  • 可以寫到文件任何位置。
  • 預設寫的指針開始指在文件開頭, 因此會覆寫。
  • 可以使用 read*()。
    file1 = open(u"D:\\新方碩.txt","r+")
    file1.seek(3)
    file1.write("HTML")
    file1.close()
    
    #預設從第一個子節開始覆寫
    file1 = open(u"D:\\新方碩.txt","r+")
    file1.seek(3)
    file1.write("HTML")
    file1.close()
8.'w+': 以文本讀寫模式打開(打開前文件會被清空)
  • 可以使用 read*()
  9.'a+': 以文本讀寫模式打開(寫只能寫在文件末尾)
  • 可以使用 read*()

 


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

-Advertisement-
Play Games
更多相關文章
  • # Eureka錯誤解決方法 ## security.basic.enabled 配置過時或不可用預設情況下:用戶名:user密碼:啟動應用在控制台會輸出,如下圖: 也可以通過如下屬性配置:spring.security.user.namespring.security.user.password如 ...
  • [TOC] Event事件 用來控制線程的執行 出現 ,就會把這個線程設置為False,就不能執行這個任務; 只要有一個線程出現 ,就會告訴Event對象,把有 的用戶全部改為True,剩餘的任務就會立馬去執行。由一些線程去控制另一些線程,中間通過Event。 進程池與線程池 1. 進程池與線程池是 ...
  • Go語言基礎之數組 本文主要介紹Go語言中數組(array)及它的基本使用。 Array ( 數組 ) 數組是同一種數據類型元素的集合。 在Go語言中,數組從聲明時就確定,使用時可以修改數組成員,但是數組大小不可變化。 基本語法: 數組定義: 比如: , 數組的長度必須是常量,並且長度是數組類型的一 ...
  • [TOC]   c++是一種中級語言,是c的擴充,是一種面向對象的程式設計語言,可以運行到多個平臺。這裡直接講語法。   基礎c++模板: javascript 函數類型 函數名(參數表);例如: int max(int x,int y,int z); int ...
  • 恢復內容開始 需要安裝三個庫(requests,BeautifulSoup4,lxml) pip install requests BeautifulSoup4 lxml 彈幕消息會滾動在終端上 且會在當前目錄下生成以主播名字命名的文件 恢復內容結束 ...
  • 1 背景 像我們去面試一些大公司的時候,就會遇到一些關於緩存的問題。可能很多同學都是接觸過,多多少少瞭解一些,但是如果沒有好好記錄這些內容,不熟練精通的話,在真正面試的時候,就很難答出來了。 在我們的平常的項目中多多少少都會使用到緩存,因為一些數據我們沒有必要每次查詢的時候都去查詢到資料庫。 特別是 ...
  • 前言 Redis哨兵模式,用現在流行的話可以說就是一個“哨兵機器人”,給“哨兵機器人”進行相應的配置之後,這個"機器人"可以7*24小時工作,它能能夠自動幫助你做一些事情,如監控,提醒,自動處理故障等。 Redis-sentinel簡介 Redis-sentinel是Redis的作者antirez, ...
  • Spring註解之@Conditional 【1】@Conditional介紹 ​ @Conditional是Spring4新提供的註解,它的作用是按照一定的條件進行判斷,滿足條件給容器註冊bean。 ​ @Conditional源碼: ​ 從代碼中可以看到,需要傳入一個Class數組,並且需要繼承 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...