日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python学习-文件的调用-读取

發(fā)布時(shí)間:2023/12/13 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习-文件的调用-读取 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

1.文件的打開(kāi)

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

#這個(gè)一定要記得關(guān)文件。close.()?

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

? ? ? ? ? ? ? ?如果不用路徑展示,那就用'filename'.其會(huì)在執(zhí)行文件所在的文件夾進(jìn)行搜索。

mode的格式有幾種:

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

'w’, ?write,寫(xiě)入模式;

'a', add, 添加模式;

'+', 讀/寫(xiě)模式;

'b', 二進(jìn)制模式;注意‘rb’參數(shù)可以用來(lái)讀取二進(jìn)制文件;

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

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

0,表示不用緩沖,直接讀寫(xiě)硬盤;

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

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

-1,表示默認(rèn)的緩沖大小。

?

with open('filename') as file_object: ? #這種方式可以自己關(guān)文件,但是后續(xù)有關(guān)在文件運(yùn)作的內(nèi)容都要是在其下一級(jí)。但是賦值出來(lái)后的結(jié)果可以穩(wěn)定的。


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)

結(jié)果如下:

The 0 username is zhangyixiao

The 1 username is yingkuqi
The 1 username is yingkuqi

?

2.讀

首先,打開(kāi)文件后,如:

f = open('filename','r') ?#使用了名為f的對(duì)象來(lái)調(diào)用,(不用好像不能調(diào)用),然后使用'r'模式(ps,可以省略,因?yàn)槭悄J(rèn)的)

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

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

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

如:

f.readline().rstrip()

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

?

如果想要讀取特定某一行,可以利用 一個(gè)指針以及for i in range(n)的結(jié)構(gòu)來(lái)實(shí)現(xià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一致,則進(jìn)入之后的判斷
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())#打開(kāi)文件,賦值給內(nèi)存中的一個(gè)值,然后操作,會(huì)自動(dòng)關(guān)閉 with open(r'e:\first week\song.txt', 'r') as test:#print(test.read()) #讀取for i in range(10):print('%i:' % i, test.readline()) # 這個(gè)形式就是反復(fù)執(zhí)行幾次,readline是按照行一個(gè)個(gè)執(zhí)行的,之前讀取過(guò)的不會(huì)再讀取print('test print', test.readline())test2 = test.readlines().copy() #全部讀取,輸出的結(jié)果是一個(gè)列表,之前讀取過(guò)的不會(huì)再讀取print(test2)#打印出文件中的每一行:for line in test2: #這樣,line代表列表中的每一個(gè)元素(就是一行),輸出就是每一行的信息print(line.strip()) #strip可以取出空格和換行print('測(cè)試是否會(huì)自動(dòng)關(guān)閉test', test) #會(huì)自動(dòng)關(guān)閉的 #換一個(gè)形式就可以解決之前讀取過(guò)的數(shù)據(jù)不能讀取的問(wèn)題 #采用利用readlines,再進(jìn)行淺copy,就可以方便進(jìn)行各種的操作 #但是會(huì)出現(xiàn)一個(gè)新的變量,且不會(huì)自動(dòng)關(guān)閉,這樣就占用了更多的內(nèi)存,可以用del來(lái)釋放變量 with open(r'e:\first week\song.txt', 'r') as test0:test = test0.readlines().copy() #把這個(gè)文件的東西作為列表復(fù)制出來(lái)# print(test.read()) #讀取for i in range(10):print('%i:' % i, test[i].strip()) # 這個(gè)形式就是反復(fù)執(zhí)行幾次,readline是按照行一個(gè)個(gè)執(zhí)行的,之前讀取過(guò)的不會(huì)再讀取print('test print', test)test2 = test0.readlines().copy() # 因?yàn)橹耙呀?jīng)讀取過(guò)了,所以輸出的結(jié)果空的列表print(test2)# 打印出文件中的每一行:for line in test: # 這樣,line代表列表中的每一個(gè)元素(就是一行),輸出就是每一行的信息print(line.strip()) # strip可以取出空格和換行print('測(cè)試是否會(huì)自動(dòng)關(guān)閉test', test) #不會(huì)自動(dòng)關(guān)閉,這樣就占用了較多的內(nèi)存了。但是通過(guò)del去除變量就可以釋放了 del test #但是通過(guò)del去除變量就可以釋放了 #嘗試使用enumerate來(lái)判定讀取的是哪一行數(shù)據(jù) 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('測(cè)試是否會(huì)自動(dòng)關(guān)閉test', test) # 但是重新利用文件的賦值方式進(jìn)行賦值之后,就可以關(guān)閉。不過(guò)要盡量避免這樣的情況出現(xiàn)。

?


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

在w的打開(kāi)方式下,如果目錄里面沒(méi)有這個(gè)文件,這個(gè)文件會(huì)被創(chuàng)建;如果有,就會(huì)被覆蓋(所以仔細(xì)考慮用'a',還是用'w')
‘a(chǎn)’模式下,不會(huì)覆蓋,只會(huì)添加,但是這個(gè)模式不能讀取的;

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

4.其他
一個(gè)break只能跳出當(dāng)前的一個(gè)for循環(huán)或者while循環(huán);

轉(zhuǎn)載于:https://www.cnblogs.com/Ian-learning/p/7707135.html

總結(jié)

以上是生活随笔為你收集整理的Python学习-文件的调用-读取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。