Python對文件的操作(轉)

一、文件對象

我理解的文件對象就是一個接口,通過這個接口對文件進行相關操作。

《Python 核心編程》上說的很晦澀,這里沒有深刻理解到,希望有人能解釋給我聽。

>>> f = open('demo.txt','r')
>>> f
<open file 'demo.txt', mode 'r' at 0x00CCCEC0>
>>> type(f)
<type 'file'>

二、相關函數

[1]、內建函數:open()

提供了初始化輸入/輸出(I/O)操作的通用接口,成功打開一個文件后會返回一個文件對象,否則發生IOError異常。語法如下:

file_object = open(file_name,access_mode = 'r',buffering = -1)

分析如下:

1):file_name:表示要打開文件名字的字符串,可以是相對路徑也可以是絕對路徑。
如:我在D盤新建一個空白名為out的文本文件,然后進行相關操作。

>>> f = open('../out.txt','w')
>>> f.write('good')
>>> f.close()

則打開該文件后,發現'good'已經寫入進去了。

接下來使用絕對路徑進行訪問,如下:

>>> f = open('D:/out.txt','r')
>>> f.read()
'good'
>>> f.close()

2、可選變量access_mode也是字符串,代表文件打開模式。

注意:

1):使用'r'或'U'模式打開的文件必須已經存在

2):'w'模式打開的文件若存在則先清空,然后重新創建

3):'a'模式打開的文件是為了追加數據做準備的,所有寫入的數據將追加到文件末尾。如果文件不存在,則自動被創建。

4):'+'代表可讀可寫

5):'b'代表二進制模式訪問

6):默認情況下是 'r'

3、buffering可選參數,用于指示訪問文件所采用的緩存方式。0表示不緩存;1表示只緩存一行,n代表緩存n行。如果不提供或為負數,則代表使用系統默認的緩存機制。

用處?這個麻煩有人能告訴我!

關閉文件:

打開文件消耗系統資源, 并且依賴于文件模式, 其它程序或許不能訪問它們。這就是一旦操作完畢就該關閉文件的重要所在。

接上面的操作,加入還沒有關閉:

復制代碼

>>> f.closed  #判斷是否關閉
False
>>> f.close() #關閉方法
>>> f.closed
True
>>> f.tell()  #如果已關閉,則一切針對文件操作都無效Traceback (most recent call last):File "<pyshell#27>", line 1, in <module>f.tell()
ValueError: I/O operation on closed file
>>> 

復制代碼

[2]、工廠函數file()

與open()一樣,可相互替換

>>> f = file('../out.txt','r')
>>> f.read()
'good'
>>> f.close()

三、相關方法

返回一個文件對象后(句柄),其實我也不清楚到底什么是句柄,這里摘自百度百科:

句柄,是整個windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個四字節長的數值,來標志應用程序中的不同對象和同類對象中的不同的實 例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等。應用程序能夠通過句柄訪問相應的對象的信息,但是句柄不是一個指針,程序不能利用句柄來直接閱讀文件中的信息。如果句柄不用在I/O文件中,它是毫無用處的。 句柄是windows用來標志應用程序中建立的或是使用的唯一整數,windows使用了大量的句柄來標志很多對象。

一般與文件相關的方法無非是:輸入、輸出、文件內移動、雜項

[1]、輸入

1、read():讀取字節到字符串中,有可選參數size,默認是-1,如果為-1或復數則文件將會被讀取到文件末尾。

>>> f.read()
'good'
>>> f.read(2)
'go'

2、readline():讀取文件的一行,包括行結束符。同read()也有個可選參數size。

3、readlines():讀取所有(剩余的)然后將它們作為字符串列表返回,它有個可選參數sizhint代表返回的最大字大小。

>>> f = file('../out.txt','r')
>>> f.readlines()
['good']

[2]、輸出

1、write():把含有文本數據或二進制數據塊的字符串寫入到文件中去。

2、writelines():針對列表操作,接受一個字符串列表作為參數,將它們寫入文件,行結束符并不會被自動加入,如果需要的話必須在調用writelines方法前給每一行結尾加上結束符。

復制代碼

>>> f =  open('d:/out.txt','w')
>>> f.writelines(['man'])
>>> f.close()
>>> f =  open('d:/out.txt','r')
>>> f.read()
'man'

復制代碼

【注意:】

當使用read()或者readlines()從文件中讀取行時,Python并不會刪除行結束符,這個操作留給了程序員。

復制代碼

>>> f.readlines()
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]\n', 'game is your life,game is your life,game is your life[]']---------------------------
>>> f = open('demo.txt','r')
>>> data = [line.strip() for line in f.readlines()]
>>> data
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]', 'game is your life,game is your life,game is your life[]']

復制代碼

類似的,write()和writelines()也不會自動加入行結束符,應該自己添加。

>>> f = open('demo.txt','w')
>>> f.writelines([' my name is BeginMan\n,I like coding'])
>>> f.close()

打開該文件可查看:

[3]、文件內移動

tell()、seek()方法

復制代碼

f = open('d:/out.txt','rb')
print f.tell()  #[1]
f.seek(10,1)    #[2]
print f.tell()  #10
print f.read(10)    # BeginMan,
print f.read(18)    #I like coding.
print f.tell()  #38"""
【1】:tell():
tell 方法確認了已經移到當前文件位置
一個文件對象維護它所打開文件的狀態。文件對象的 tell 方法告訴你在打開文件中的當前位置。
因為我們還沒有對這個文件做任何事,當前位置為 0,它是文件的開始處。
"""
"""
【2】:seek():
文件對象的 seek 方法在打開文件中移動到另一個位置。第二個參數指出第一個參數是什么意思:
0 表示移動到一個絕對位置 (從文件開始算起),
1 表示移到一個相對位置 (從當前位置算起),
還有 2 表示文件末尾
"""

復制代碼

[4]、文件迭代

復制代碼

>>> f = open('d:/out.txt','rb')
>>> for eachline in f:eachline'my name is BeginMan,\r\n'
'I like coding.\r\n'

復制代碼

四、相關屬性

file.closed:文件已被關閉,否則為False

file.mode:文件訪問模式

file.name:文件名稱

>>> f.mode
'r'
>>> f.name
'demo.txt'

FROM:http://www.cnblogs.com/BeginMan/p/3166644.html

轉載于:https://www.cnblogs.com/rusking/p/5119796.html

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

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

相關文章

微軟發布全新Win11 輕量級系統Validation OS

你可能還不知道&#xff0c;在沒有任何公開宣傳的情況下&#xff0c;在最近&#xff0c;微軟最近發布了一個全新的操作系統 Microsoft Validation OS。根據微軟的說法&#xff0c;這是一個輕量級、快速且可自定義的基于 Windows 11 的操作系統。專門為硬件或軟件供應商、開發人…

夢回編程- 由LD_LIBRARY_PATH引發JNI的理解

前些天在配置通過OCI的方式連接Oracle中曾進碰到一個關于“java.lang.UnsatisfiedLinkError: no XXX in java.library.path”這么一個問題&#xff0c;這個問題糾結了許久才解決&#xff0c;解決方式參考前面的文章。趁雙休日好好的理解一下產生這個問題的來龍去脈。先看一段話…

CSDN博客文章閱讀模式插件(附源碼)

插件地址&#xff1a;https://greasyfork.org/zh-CN/scripts/380667-csdn%E5%8D%9A%E5%AE%A2%E9%98%85%E8%AF%BB%E6%A8%A1%E5%BC%8F%E5%88%87%E6%8D%A2%E6%8F%92%E4%BB%B6 插件安裝使用說明請參閱&#xff1a;https://greasyfork.org/zh-CN 瀏覽器&#xff08;正常&#xff09…

C語言試題六十一之請編寫函數fun:將s所指字符串中下標為偶數的字符刪除,串中剩余字符形成新串放在t所指數組中。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫函數…

【ArcGIS風暴】ArcGIS tif轉jpg:JPEG壓縮僅支持8位或16位無符號數據(具有一個或三個波段,且沒有色彩映射表)解決方案!

擴展閱讀:【ArcGIS風暴】ArcGIS支持的柵格數據格式大全及格式轉換案例精解 文章目錄 問題描述tif格式和JPEG格式詳解ArcGIS軟件tif轉jpg方法總結問題描述 如下圖所示,在ArcGIS中將tif格式的無人機影像數據導出為Jpg格式時,提示:JPEG壓縮僅支持8位或16位無符號數據(具有一…

CF374 Maxim and Array

貪心 如果有0先變成非0 如果負數的個數 應該變為偶數 之后就是每次將絕對值最小的值加K #include<bits/stdc.h> using namespace std; const int MAXN 2e55; typedef long long ll;int N,K,X; ll A[MAXN]; int tag[MAXN]; struct Node{ll x; int id;Node(ll a0, int …

Blazor University (29)表單 —— 編輯表單數據

原文鏈接&#xff1a;https://blazor-university.com/forms/editing-form-data/編輯表單數據源代碼[1]因為 EditForm 組件呈現標準的 <form> HTML 元素&#xff0c;實際上可以在我們的標記中使用標準的 HTML 表單元素&#xff0c;例如 <input> 和 <select>&a…

廣州Uber優步司機獎勵政策(1月4日~1月10日)

滴快車單單2.5倍&#xff0c;注冊地址&#xff1a;http://www.udache.com/ 如何注冊Uber司機(全國版最新最詳細注冊流程)/月入2萬/不用搶單&#xff1a;http://www.cnblogs.com/mfryf/p/4612609.html 優步獎勵低/不掙錢/怎么辦?看這里&#xff1a;http://www.cnblogs.com/mfry…

10 關聯模型《ThinkPHP6 入門到電商實戰》

一、什么是關聯模型 關聯模型指在 tp 中使用模型對多個數據表進行關聯。例如一個主賬戶表與一個賬戶信息表進行關聯&#xff0c;此時兩者關聯后可以更加簡便的進行操作&#xff0c;使代碼更加清晰&#xff0c;操作更加簡便。 二、 正向一對一關聯 一對一關聯指的是數據只有一…

阿里云云計算ACP考試知識點(標紅為重點)

阿里云云計算專業認證考試&#xff08;ACP&#xff09;&#xff08;ECS&#xff09; 什么是云服務器 ECS 云服務器 Elastic Compute Service&#xff08;ECS&#xff09;是阿里云提供的一種基礎云計算服務。使用云服務器 ECS 就像使用水、電、煤氣等資源一樣便捷、高效。您無需…

C語言試題六十二之請編寫函數fun除了字符串前導和尾部的*號之外,將串中其他*號全部刪除。形參h已指向字符串第一個字母,形參p已指向字符串中最后一個字母。在編寫程序時,不得使用c語言提供的字符串函數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫函數…

Android 整體設計及背后意義

目錄 1. Android設計的現實意義 1.1 發展的前提&#xff1a;硬件抽象 1.2 能力的樞紐&#xff1a;組件化 1.3 應用的基礎-接口層 2. 對于我們的象征意義和實踐 3. 小結 阿里妹導讀&#xff1a;現實工作中經常可以聽到這樣的說法&#xff1a;框架的升級帶來協議性能的提升…

數學的意蘊與價值(建議收藏)

數學的意蘊與價值,內容包括數學運算、長度面積等位換算等等,建議收藏。 意蘊1: 1x8+1=912x8+2=98123x8+3=9871234x8+4=987612345x8+5=98765123456x8+6=9876541234567x8+7=987654312345678x8+8=98765432123456789x8+9=987654321意蘊2: 1x9+2=1112x9+3=111123x9+4=11111234x9…

85、交換機安全MAC層***配置實驗之Port-Security

1、Port Security解析觸發Port Security的條件&#xff1a;未授權的MAC地址端口MAC地址數量超過了限制觸發Port Security后的動作&#xff1a;protect Security violation protect mode 丟棄數據&#xff0c;不發送SNMP Trap消息 restrict Security violation restr…

C#-Linq源碼解析之Concat

前言在Dotnet開發過程中&#xff0c;Concat作為IEnumerable的擴展方法&#xff0c;十分常用。本文對Concat方法的關鍵源碼進行簡要分析&#xff0c;以方便大家日后更好的使用該方法。使用Concat 連接兩個序列。假如我們有這樣的兩個集合&#xff0c;我們需要把兩個集合進行連接…

11 驗證器《ThinkPHP6 入門到電商實戰》

注&#xff1a;示例來源于官方手冊 一、驗證器定義 驗證器用于對數據進行驗證&#xff0c;你可以理解為一個“層”&#xff0c;在傳入數據時可以使用這個層對數據進行驗證&#xff0c;這樣就可以不用頻繁的在方法中編寫代碼去驗證&#xff0c;只需要編寫一個驗證層即可&#…

合作開發和委托開發完成成果的歸屬

據專利法第8條的規定&#xff1a;“兩個以上單位或者個人合作完成的發明創造、一個單位或者個人接受其他單位或者個人委托所完成的發明創造&#xff0c;除另有協議的以外&#xff0c;申請專利的權利屬于完成或者共同完成的單位或者個人&#xff1b;申請被批準后&#xff0c;申請…

C語言試題六十三之請編寫函數fun:將s所指字符串中ascii值為偶數的字符刪除,串中剩余字符形成一個新串放在t所指的數組中。

1、 題目 請編寫函數fun,其功能是:將s所指字符串中ascii值為偶數的字符刪除,串中剩余字符形成一個新串放在t所指的數組中。 2 、溫馨提示 C語言試題匯總里可用于計算機二級C語言筆試、機試、研究生復試中C程序設計科目、幫助C語言學者打好程序基礎、C語言基礎,鍛煉您…

nginx+php

nginxphp基礎架構 生產實踐 nginx配置文件: 主配置文件 123456789101112131415161718192021222324252627282930313233[rootlinux-node1 conf.d]# cat /etc/nginx/nginx.conf user nginx;worker_processes auto;error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load…

【ArcGIS風暴】ArcGIS10.8中柵格數據金字塔的來龍去脈,你知道嗎?

如下圖所示,通常情況下,當將沒有金字塔的柵格數據集添加至 ArcGIS時,系統將提示您構建金字塔。金字塔指不同比例下分辨率降低的數據概視圖。金字塔十分有用,因為金字塔提升了分辨率低于其全分辨率的柵格數據集的繪制速度。建議構建用于大型柵格數據集的金字塔。 點擊【是】…