上下文管理器,yield實現檔案的讀取

2021-09-03 10:51:05 字數 2257 閱讀 3682

上下文管理器:開啟檔案,執行完with語句內容之後,自動關閉檔案物件

with open(』/tmp/passwd』) as f:

等同於f = open(』/tmp/passwd』)

with open('/tmp/passwd') as f1,\

open('/tmp/passwbackup','w+')as f2:

等同於 # 將第乙個檔案的內容寫入第二個檔案中

f2.write(f1.read())

with open('/tmp/passwd') as f1:

content = f1.read()

with open('/tmp/passwdbackup','w+') as f2:

f2.write(content)

f2.seek(0,0) 將指標位置放置在開始位置,不然後面列印不出來。因為指標在末尾

#iterable:生成乙個物件,可以對其進行遍歷

f = open('data.txt')

print(isinstance(f,iterable))

for i,item in enumerate(f):

if i == 10: # 取出檔案中前10個字元

break

print(i,item)

def bylineread(fimename):

with open(fimename) as f:

line = f.readline()

while line:

yield line

line = f.readline()

read:是乙個生成器物件

read = bylineread('data.txt')

print(read) 會生成乙個生成器

print(next(read)) 通過next讀取生成器內容

import string

import random

def creat():

dd = '01-af-3b'

num = string.hexdigits

for i in range(3):

n = random.sample(num,2)

dd = dd + '-'+''.join(n).upper()

return dd

def main():

with open('rr','r+') as f1:

for i in range(100):

ds = creat()

f1.write(ds + '\n')

print(f1.read())

main()

import random

def ss():

dd = '172.25.254'

s= str(random.randint(0,255))

dd = dd + '.'+str(s)

return dd

def nn():

with open('ips.txt','r+') as f2:

for i in range(1200):

vn = ss()

# print(vn)

f2.write(vn + '\n')

nn()

def sorted_ip(filename,count=10):

ips_dict = dict()

with open(filename) as f:

for ip in f:

if ip in ips_dict:

ips_dict[ip] += 1

else:

ips_dict[ip] = 1

sorte_ip = sorted(ips_dict.items(),key=lambda

x:x[1],reverse=true)[:count]

return sorte_ip

print(sorted_ip('ips.txt'))

with上下文管理器

在執行 with 語句時,首先執行 with 後面的 open 執行完 後,會將 的結果通過 as 儲存到 f 中 然後在下面實現真正要執行的操作 在操作後面,並不需要寫檔案的關閉操作,檔案會在使用完後自動關閉 實際上,在檔案操作時,並不是不需要寫檔案的關閉,而是檔案的關閉操作在 with 的上下文...

with上下文管理器

上下文管理器 任何實現了enter 和exit 法的物件都可稱之為上下 管理 器,上下 管理器物件可以使 with 關鍵字。顯然,件 file 物件也實現 了上下 管理器 方法一class file def init self,filename,mode self.filename filename...

上下文管理器

今天我們聊聊上下文管理器,當然今天所談僅為個人觀點!今天如果不是學生面試回來跟我聊到了上下文管理器,我都忘了python中還有這麼個鬼了。特別寫一篇博文我們簡單聊聊。普通的檔案操作方式,例如 情況01 1 以寫的方式開啟檔案 f open 1.txt w 2 寫入檔案內容 f.write hello...