Python學習-文件的調用-讀取

?

1.文件的打開

open('filename'[,mode[,buffering]])

#這個一定要記得關文件。close.()?

filename,要以路徑的形式展示,比如在"c:\"中,則要這樣寫: r'c:\filename'

? ? ? ? ? ? ? ?如果不用路徑展示,那就用'filename'.其會在執行文件所在的文件夾進行搜索。

mode的格式有幾種:

‘r’, ?read, ?讀取模式;

'w’, ?write,寫入模式;

'a', add, 添加模式;

'+', 讀/寫模式;

'b', 二進制模式;注意‘rb’參數可以用來讀取二進制文件;

主要使用的模式是前面三種。

buffering是緩沖,參數為,0, 1,以及大于1的數字和-1。

0,表示不用緩沖,直接讀寫硬盤;

1,表示啟用緩沖(即內存);

大于1的數字,表示緩沖的大小(單位是字節)

-1,表示默認的緩沖大小。

?

with open('filename') as file_object: ? #這種方式可以自己關文件,但是后續有關在文件運作的內容都要是在其下一級。但是賦值出來后的結果可以穩定的。


with open(r'e:\first week\username.txt','r') as f:

for i in range(2):
r_username = 'The %s username is %s'%(i,f.readline())
print(r_username)
print(r_username)

結果如下:

The 0 username is zhangyixiao

The 1 username is yingkuqi
The 1 username is yingkuqi

?

2.讀

首先,打開文件后,如:

f = open('filename','r') ?#使用了名為f的對象來調用,(不用好像不能調用),然后使用'r'模式(ps,可以省略,因為是默認的)

f.read(n) ?# n,表示讀取多少字符,如果沒有n就表示把之前未讀取的,全部讀取出來。

f.readlines() ?#這個是讀取出所有行,輸出的結果會是一個列表,每一行作為一個元素存儲在里面。

f.readline(n) # n 表示可以讀取的字符數目的最大值,從0開始,沒有寫表示按次序來。 如果要消除尾部的換行符'\n',可以在后面加上rstrip.()

如:

f.readline().rstrip()

$$一定要記住!這個read,readines,readline的功能中,如果之前有讀取過的,它就不再讀取了。包括使用readlines,read,readline進行讀取的內容

?

如果想要讀取特定某一行,可以利用 一個指針以及for i in range(n)的結構來實現:

password = input("Please enter your password:")


passwd = open(r'e:\first week\passwd.txt', 'r')
for l in range(2):        #l作為指針指示第幾行
passwd_buffer = passwd.readline().rstrip()
if l == j: #如果l與登錄用戶的順序j一致,則進入之后的判斷
if password == passwd_buffer:
print("yes,%s is in!"% username)
break
else:
print("Your password is wrong!")
count += 1
with open(r'e:\first week\passwd.txt', 'r+') as file_pass:for i in range(2):print(file_pass.readline())#打開文件,賦值給內存中的一個值,然后操作,會自動關閉
with open(r'e:\first week\song.txt', 'r') as test:#print(test.read())  #讀取for i in range(10):print('%i:' % i, test.readline())  # 這個形式就是反復執行幾次,readline是按照行一個個執行的,之前讀取過的不會再讀取print('test print', test.readline())test2 = test.readlines().copy()  #全部讀取,輸出的結果是一個列表,之前讀取過的不會再讀取print(test2)#打印出文件中的每一行:for line in test2:   #這樣,line代表列表中的每一個元素(就是一行),輸出就是每一行的信息print(line.strip())         #strip可以取出空格和換行print('測試是否會自動關閉test', test)   #會自動關閉的
#換一個形式就可以解決之前讀取過的數據不能讀取的問題
#采用利用readlines,再進行淺copy,就可以方便進行各種的操作
#但是會出現一個新的變量,且不會自動關閉,這樣就占用了更多的內存,可以用del來釋放變量
with open(r'e:\first week\song.txt', 'r') as test0:test = test0.readlines().copy()  #把這個文件的東西作為列表復制出來# print(test.read())  #讀取for i in range(10):print('%i:' % i, test[i].strip())  # 這個形式就是反復執行幾次,readline是按照行一個個執行的,之前讀取過的不會再讀取print('test print', test)test2 = test0.readlines().copy()  # 因為之前已經讀取過了,所以輸出的結果空的列表print(test2)# 打印出文件中的每一行:for line in test:  # 這樣,line代表列表中的每一個元素(就是一行),輸出就是每一行的信息print(line.strip())  # strip可以取出空格和換行print('測試是否會自動關閉test', test)   #不會自動關閉,這樣就占用了較多的內存了。但是通過del去除變量就可以釋放了
del test            #但是通過del去除變量就可以釋放了
#嘗試使用enumerate來判定讀取的是哪一行數據
with open(r'e:\first week\song.txt', 'r') as test:for index, line in enumerate(test):if index == 9:print('The 10th line is:', line)print('測試是否會自動關閉test', test)  # 但是重新利用文件的賦值方式進行賦值之后,就可以關閉。不過要盡量避免這樣的情況出現。

?


3.寫
簡單的格式是
with open(filename,'w') as file:
file.write("contents")

在w的打開方式下,如果目錄里面沒有這個文件,這個文件會被創建;如果有,就會被覆蓋(所以仔細考慮用'a',還是用'w')
‘a’模式下,不會覆蓋,只會添加,但是這個模式不能讀取的;

如果要寫入多行數據,可以采用的形式是:
with open(filename,'w') as file:
file.write("contents\n")
  file.write("contents\n")


4.其他
一個break只能跳出當前的一個for循環或者while循環;

轉載于:https://www.cnblogs.com/Ian-learning/p/7707135.html

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

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

相關文章

javascript . 05 json的組成、for...in 遍歷對象、簡單數據類型與復雜數據類型的傳值與傳址、內置對象...

對象字面量 JSON var obj { aaa :999};   var json{"aaa":999,“bbb”:888}; ”kay“:value 對象字面2??定義方法和json很像,只有一點不同,json的key 必須加“”   ; 對象,數…

nohup命令

nohup命令 起因 ssh到機器上,然后執行某個程序,再登錄發現程序早就不運行了。 原因 ssh過去之后,執行的大部分命令(守護進程不會斷開),都是ssh進程的子進程,ssh斷開,命令自然會中斷 …

mac與phy如何實現網絡自適應

這兩天修改網卡驅動以實現10/100/1000M自適應,因此研究了下phy芯片和emac驅動如何兼容10/100/1000M網絡環境,記錄在此。 網絡中設備端數據鏈路層由mac芯片和phy芯片組成,phy芯片根據外部網絡環境完成自動協商以及配置,驅動中根據p…

asp.net(mvc) 框架

1、NFine mvcef 2、Grove orm架構 3、NHibernate orm 4、NBear 5、petshop 6、Membership 7、Brnshop 網上商城 8、cms快速開發:http://www.open-open.com/news/view/a90f1 9、c#開源框架:http://www.cnblogs.com/gaoyuchuanIT/articles/5612268.html 來…

LVM邏輯卷詳解及創建

我們先來看一下這張圖片:PV: 底層的一個硬盤設備,可以是一個分區,也可能是一個RAID。我們可以把這個塊設備創建成一個物理卷格式,即一個PV。VG: 將一個或多個PV提供的存儲空間在一個更低的單位上劃分成一個個獨立的存儲單元&#…

python文件操作總結

python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir() 函數用來刪除一個文件:os.remove() 刪除多個目…

Fread 和fwrite的參數不同,返回值不同

函數fwrite 功能C語言函數,向文件寫入一個數據塊 。size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);注意:這個函數以二進制形式對文件進行操作,不局限于文本文件返回值:返回實際寫入的數據塊數目&…

課程簡介及算法分析

先學課程 -概率論 運行時間(running time) - 輸入(eg 已經排序) - 輸入規模(6和6*10^9) 各種各樣的分析: - 最壞情況分析(worst case)usually T(n) max time when inp…

利用shell腳本添加環境變量

在shell腳本設置了環境變量,如export LIBRARY_PATH./lib/,執行了此腳本后, 在執行生成的可執行文件,提示錯誤 error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory 但是如果把expor…

2017 ACM-ICPC西安網賽B-Coin

B-Coin Bob has a not even coin, every time he tosses the coin, the probability that the coins front face up is \frac{q}{p}(\frac{q}{p} \le \frac{1}{2})?p??q??(?p??q??≤?2??1??). The question is, when Bob tosses the coin kktimes, whats the pr…

Java第四次作業

Dog dognew Dog("哈士奇","黑白",2);System.out.println(dog);}}class Dog {private String name;private String color;private int age;public String getName(){return name;}public String getColor(){return color;}public int getAge(){return age;}…

ITU-RBT.656視頻標準接口

601是SDTV的數據結構 656是SDTV的interface 709是HDTV的數據結構 1120是HDTV的interface ITU-R BT.601是演播室數字電視編碼參數標準,而ITU-R BT.656 則是ITU-R BT.601附件A中的數字接口標準, 用于主要數字視頻設備(包括芯片)之間采用27Mhzs并口或243Mb…

C語言博客作業03--函數

1.本章學習總結 1.1思維導圖 1.2本章學習體會及代碼量學習體會 1.2.1學習體會 本周學習了函數,其實,函數于之前學習的三大控制結構是密不可分的,而函數又有其特殊的地方,例如:函數的聲明、函數的調用等等。我們之前編寫…

Shell記錄-Shell命令(其他)

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。 .命令格式 top [參數]Shell2.命令功能 顯示當前系統正在執行的進程的相關信息,包括進程ID、內存占用率、…

Insta360:從軟到硬,一年做出360°全景相機,中間填了多少坑?

摘要劉靖康在大學就開始創業。在大二的時候他曾經去騰訊實習,然后又去了“超級課程表”這個團隊實習半年,2013 年 9 月回到南京創業,一開始的產品叫“名校直播”,是一款圍繞院校名師講座所做的視頻直播產品。 不久前,一…

No.10 awk、變量、運算符、if多分支

awk、變量、運算符、if多分支 awk語法 ~ awk -F: {print $3,$4} /etc/passwd //-F指定:分隔符 默認以空格作為分隔符 ~ awk -F: {print &0,NF} //$0打印全部,NF有幾段內容 ~ awk -F: {print $NF} /etc/passwd //$NF打印最后一段內容 ~ awk -F: {print NR} /etc/passwd…

什么是自然語言處理技術

自然語言處理(NLP)是計算機科學,人工智能,語言學關注計算機和人類(自然)語言之間的相互作用的領域。自然語言處理是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進…

SDOI2005 區間

題目描述 現給定n個閉區間[ai, bi]&#xff0c;1<i<n。這些區間的并可以表示為一些不相交的閉區間的并。你的任務就是在這些表示方式中找出包含最少區間的方案。你的輸出應該按照區間的升序排列。這里如果說兩個區間[a, b]和[c, d]是按照升序排列的&#xff0c;那么我們有…

排序: 選擇排序

1. 基本原理 將待排序的元素分為已排序(初始為空)和未排序兩組&#xff0c;依次將未排序的元素中值最小的元素放入已排序的組中。 直接選擇排序簡單直觀&#xff0c;但性能略差&#xff1b;堆排序是一種較高效的選擇排序方法&#xff0c;但實現起來略微復雜。 2. 直接選擇排序 …

JavaScript的值傳遞和引用傳遞

原文: Explaining Value vs. Reference in Javascript譯者: Fundebug為了保證可讀性&#xff0c;本文采用意譯而非直譯。另外&#xff0c;本文版權歸原作者所有&#xff0c;翻譯僅用于學習。 JavaScript有5種基本的數據類型&#xff0c;分別是&#xff1a;布爾、null、undefine…