[python拾遺]文件操作

来源:http://www.cnblogs.com/loveclear/archive/2016/09/30/5924826.html
-Advertisement-
Play Games

文件操作 1.open()函數 open()函數主要用於文件處理,一般分為下麵3個過程: 1.打開文件 2.操作文件 3.關閉文件 常見的格式示例: 1.打開文件 常見的模式有: 1.‘r’,只讀 2.‘w’,只寫(當對打開執行只寫操作後,文件原內容將會被清空,註意備份) 3.‘a’,追加 "+" ...


文件操作

1.open()函數

open()函數主要用於文件處理,一般分為下麵3個過程:

1.打開文件

2.操作文件

3.關閉文件

常見的格式示例:

f = open('note.txt','r')
f.read()
f.close()

 

1.打開文件

文件句柄 = open('文件路徑','模式')

常見的模式有:

1.‘r’,只讀

2.‘w’,只寫(當對打開執行只寫操作後,文件原內容將會被清空,註意備份)

3.‘a’,追加

"+" 表示可以同時讀寫某個文件

1.‘r+’

2.‘w+’

3.‘a+’

“b”表示處理二進位文件

1.‘rb’,‘rb+’

2.‘wb’,‘wb+’

3.‘ab’,‘ab+’

"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)

1.‘rU’

2.‘r+U’

 

2.操作文件

  1 class file(object)
  2     def close(self): # real signature unknown; restored from __doc__
  3         關閉文件
  4         """
  5         close() -> None or (perhaps) an integer.  Close the file.
  6 
  7         Sets data attribute .closed to True.  A closed file cannot be used for
  8         further I/O operations.  close() may be called more than once without
  9         error.  Some kinds of file objects (for example, opened by popen())
 10         may return an exit status upon closing.
 11         """
 12 
 13     def fileno(self): # real signature unknown; restored from __doc__
 14         文件描述符
 15          """
 16         fileno() -> integer "file descriptor".
 17 
 18         This is needed for lower-level file interfaces, such os.read().
 19         """
 20         return 0
 21 
 22     def flush(self): # real signature unknown; restored from __doc__
 23         刷新文件內部緩衝區
 24         """ flush() -> None.  Flush the internal I/O buffer. """
 25         pass
 26 
 27 
 28     def isatty(self): # real signature unknown; restored from __doc__
 29         判斷文件是否是同意tty設備
 30         """ isatty() -> true or false.  True if the file is connected to a tty device. """
 31         return False
 32 
 33 
 34     def next(self): # real signature unknown; restored from __doc__
 35         獲取下一行數據,不存在,則報錯
 36         """ x.next() -> the next value, or raise StopIteration """
 37         pass
 38 
 39     def read(self, size=None): # real signature unknown; restored from __doc__
 40         讀取指定位元組數據
 41         """
 42         read([size]) -> read at most size bytes, returned as a string.
 43 
 44         If the size argument is negative or omitted, read until EOF is reached.
 45         Notice that when in non-blocking mode, less data than what was requested
 46         may be returned, even if no size parameter was given.
 47         """
 48         pass
 49 
 50     def readinto(self): # real signature unknown; restored from __doc__
 51         讀取到緩衝區,不要用,將被遺棄
 52         """ readinto() -> Undocumented.  Don't use this; it may go away. """
 53         pass
 54 
 55     def readline(self, size=None): # real signature unknown; restored from __doc__
 56         僅讀取一行數據
 57         """
 58         readline([size]) -> next line from the file, as a string.
 59 
 60         Retain newline.  A non-negative size argument limits the maximum
 61         number of bytes to return (an incomplete line may be returned then).
 62         Return an empty string at EOF.
 63         """
 64         pass
 65 
 66     def readlines(self, size=None): # real signature unknown; restored from __doc__
 67         讀取所有數據,並根據換行保存值列表
 68         """
 69         readlines([size]) -> list of strings, each a line from the file.
 70 
 71         Call readline() repeatedly and return a list of the lines so read.
 72         The optional size argument, if given, is an approximate bound on the
 73         total number of bytes in the lines returned.
 74         """
 75         return []
 76 
 77     def seek(self, offset, whence=None): # real signature unknown; restored from __doc__
 78         指定文件中指針位置
 79         """
 80         seek(offset[, whence]) -> None.  Move to new file position.
 81 
 82         Argument offset is a byte count.  Optional argument whence defaults to
 83 (offset from start of file, offset should be >= 0); other values are 1
 84         (move relative to current position, positive or negative), and 2 (move
 85         relative to end of file, usually negative, although many platforms allow
 86         seeking beyond the end of a file).  If the file is opened in text mode,
 87         only offsets returned by tell() are legal.  Use of other offsets causes
 88         undefined behavior.
 89         Note that not all file objects are seekable.
 90         """
 91         pass
 92 
 93     def tell(self): # real signature unknown; restored from __doc__
 94         獲取當前指針位置
 95         """ tell() -> current file position, an integer (may be a long integer). """
 96         pass
 97 
 98     def truncate(self, size=None): # real signature unknown; restored from __doc__
 99         截斷數據,僅保留指定之前數據
100         """
101         truncate([size]) -> None.  Truncate the file to at most size bytes.
102 
103         Size defaults to the current file position, as returned by tell().
104         """
105         pass
106 
107     def write(self, p_str): # real signature unknown; restored from __doc__
108         寫內容
109         """
110         write(str) -> None.  Write string str to file.
111 
112         Note that due to buffering, flush() or close() may be needed before
113         the file on disk reflects the data written.
114         """
115         pass
116 
117     def writelines(self, sequence_of_strings): # real signature unknown; restored from __doc__
118         將一個字元串列表寫入文件
119         """
120         writelines(sequence_of_strings) -> None.  Write the strings to the file.
121 
122         Note that newlines are not added.  The sequence can be any iterable object
123         producing strings. This is equivalent to calling write() for each string.
124         """
125         pass
126 
127     def xreadlines(self): # real signature unknown; restored from __doc__
128         可用於逐行讀取文件,非全部
129         """
130         xreadlines() -> returns self.
131 
132         For backward compatibility. File objects now include the performance
133         optimizations previously implemented in the xreadlines module.
134         """
135         pass
136 
137 Python 2.x
python2操作文件
  1 class TextIOWrapper(_TextIOBase):
  2     """
  3     def close(self, *args, **kwargs): # real signature unknown
  4         關閉文件
  5         pass
  6 
  7     def fileno(self, *args, **kwargs): # real signature unknown
  8         文件描述符
  9         pass
 10 
 11     def flush(self, *args, **kwargs): # real signature unknown
 12         刷新文件內部緩衝區
 13         pass
 14 
 15     def isatty(self, *args, **kwargs): # real signature unknown
 16         判斷文件是否是同意tty設備
 17         pass
 18 
 19     def read(self, *args, **kwargs): # real signature unknown
 20         讀取指定位元組數據
 21         pass
 22 
 23     def readable(self, *args, **kwargs): # real signature unknown
 24         是否可讀
 25         pass
 26 
 27     def readline(self, *args, **kwargs): # real signature unknown
 28         僅讀取一行數據
 29         pass
 30 
 31     def seek(self, *args, **kwargs): # real signature unknown
 32         指定文件中指針位置
 33         pass
 34 
 35     def seekable(self, *args, **kwargs): # real signature unknown
 36         指針是否可操作
 37         pass
 38 
 39     def tell(self, *args, **kwargs): # real signature unknown
 40         獲取指針位置
 41         pass
 42 
 43     def truncate(self, *args, **kwargs): # real signature unknown
 44         截斷數據,僅保留指定之前數據
 45         pass
 46 
 47     def writable(self, *args, **kwargs): # real signature unknown
 48         是否可寫
 49         pass
 50 
 51     def write(self, *args, **kwargs): # real signature unknown
 52         寫內容
 53         pass
 54 
 55 Python 3.x
python3操作文件

但其實常用的操作也就那幾個:

f.read(3)   # python2中表示指定讀取3個位元組,python3中表示指定讀取3個字元!
f.readline()    # 讀取文件內容中的一行
f.readlines()   # 自動將文件內容解析為一個< 行的列表 >,可以用 for line in f.readlines(): 處理
f.write('helloPython')
f.seek(9)   # 按照位元組來執行,用來指定當前文件指針位置,seek(0)表示文件指針移到文件頭,seek(0,2)指向文件尾,便於追加內容
f.tell()    # 是按照位元組來執行的,用來查看當前指針位置

還有一個truncate()函數,用於截斷文件內容且僅保留文件內容截斷處之前的內容,不容易理解可以看示例:

f = open('test.log','r+',encoding='utf-8')
#  encoding='utf-8',有處理漢字的時候這樣用
f.seek(9)
#   原文件內容是‘小蘋果helloPython’
f.truncate()
#執行truncate()後,僅保留原文件截斷之前的內容,這裡即為‘小蘋果’
f.close()

2.with語句

上面利用open()函數進行文件處理時,必須在文件打開進行操作後執行f.close()關閉文件,十分的麻煩。而使用with()語句則可以避免這一步繁瑣的操作,自動在文件操作後關閉文件。並且,在python中引入with語句的目的是在異常處理中把try,except和finally關鍵字,以及與資源分配釋放相關的代碼全部去掉,從而減少代碼的編寫量,使代碼更簡潔!

如:

with open('name.txt', 'w') as f:
    f.write('Somebody^Fancy1')

等價於:

try:
    f = open('name.txt','w')
    f.write('Somebody^Fancy1')
finally:
    if f:
        f.close()

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

-Advertisement-
Play Games
更多相關文章
  • (更多內容請關註本人微信訂閱號:it_pupil) 你沒進錯,我們講的是Java的輸入輸出流。 概述 ➤ 可以從其中讀入一個位元組序列的對象稱作輸入流。(輸入流是一個對象,可以從這個對象中讀取一個位元組序列。) ➤ 可以向其中寫入一個位元組序列的對象稱作輸出流。 ➤ 讀入或者寫入的位元組序列當然有個來源地和 ...
  • 在PB實現支付寶當面付的功能,需要先在支付寶進行商戶簽約,並設置相關的公鑰信息(具體參考支付寶文檔)。 然後使用對應的私鑰文件對參數進RSAWithSha1前面計算。具體代碼如下: 其中wf_alipay_urlencode函數代碼如下: demo代碼詳見w_rsa窗體的SHA1WithRSA按鈕下 ...
  • 在學習qt過程中,遇到了編譯oracle驅動的問題,在開源協議下沒有編譯好的,那就只能自己來了 雖然網上已經有了很多這種文章 但是大多都用不了,攤手.jpg win7 (64bit) oracle 11g (r2) qt (5.60/5.70) 通過 qt oci源碼目錄 D:\Qt5.7.0\5. ...
  • 題目:輸入n個數,求最大的連續子段和,並輸出子段的起點下標和終點下標; 思路:分治法; 代碼如下: ...
  • 題目鏈接 http://codeforces.com/gym/101102/problem/D problem description Given an R×C grid with each cell containing an integer, find the number of subrect ...
  • 一、什麼是迴文字 給定一個字元串,從前往後讀和從後往前讀,字元串序列不變。例如,河北省農村信用社的客服電話是“96369”,無論從後往前讀,還是從前後往後讀,各個字元出現的位置不變。 二、功能實現 (一)、給定一個字元串,判斷該字元串是否是迴文字。 (二)、給定一個任意字元串,判斷是否可以轉換為迴文 ...
  • 擴展歐幾裡得模板套一下就A了,不過要註意剛好整除的時候,代碼中有註釋 ...
  • 一、介面 Java語言不允許一個子類擁有多個直接父類,即任何子類只能有一個直接父類。但允許一個類實現多個介面,即在定義類的介面名稱列表中可以包含1個或多個介面名稱,從而實現多重繼承的特性。介面的定義格式如下: 【介面修飾詞列表】 interface 介面名 【extends 介面名稱列表】 { 介面 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...