日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Python?標(biāo)準(zhǔn)庫?fileinput與文件迭代器_python

作者:wohu1104 ? 更新時(shí)間: 2022-10-27 編程語言

1. 使用 fileinput 進(jìn)行迭代

fileinput 模塊可以對(duì)一個(gè)或多個(gè)文件中的內(nèi)容進(jìn)行迭代、遍歷等操作。該模塊的 input() 函數(shù)有點(diǎn)類似文件 readlines 函數(shù),但區(qū)別明顯:

  • readlines 是一次性讀取文件中的全部內(nèi)容,如果文件較大的話,會(huì)占用大量內(nèi)存;
  • input 返回的則是一個(gè)迭代對(duì)象,結(jié)合 for 循環(huán)使用,典型用法如下:
import fileinput

for line in fileinput.input(filename):
    process(line)

實(shí)例:

import fileinput

for line in fileinput.input("D:/Users/data.txt"):
    print(line)

注意:input 函數(shù)有多個(gè)參數(shù):分別設(shè)置讀取文件路徑、讀寫模式、編碼方式、緩沖區(qū)大小、備份文件擴(kuò)展名等。

此外,fileinput 模塊還有很多常用的函數(shù),這里介紹幾個(gè)最常用的。

函數(shù)名 說明:

  • fileinput.input() 返回能夠用于 for 循環(huán)遍歷的對(duì)象
  • fileinput.filename() 返回當(dāng)前文件的名稱
  • fileinput.lineno() 返回當(dāng)前已經(jīng)讀取的行的數(shù)量(或者序號(hào))
  • fileinput.filelineno() 回當(dāng)前讀取的行的行號(hào)
  • fileinput.isfirstline() 檢查當(dāng)前行是否是文件的第一行
  • fileinput.isstdin() 判斷最后一行是否從 stdin 中讀取
  • fileinput.close() 關(guān)閉隊(duì)列

2. 文件迭代器

#打開文件,一次寫入多行內(nèi)容
f = open("D:/Users/data.txt",'w')
content = ['append information1\n','append information2']
f.writelines(content)
f.close()

#打開文件,通過文件迭代器遍歷文件
f = open("D:/Users/data.txt",'r')
for line in f:
    print('content:',line)
# 或者 將讀取內(nèi)容轉(zhuǎn)化為字符串列表 效果類似 readlines
lines = list(f)
print(lines)
#關(guān)閉文件
f.close()

執(zhí)行結(jié)果(省略空行):

content: append information1
content: append information2

3. 字典的 setdefault 方法使用舉例

如果僅當(dāng)字典中不存在某個(gè)鍵值對(duì)時(shí),才插入到字典中;如果存在,不必插入(也就不會(huì)修改鍵值對(duì))。

這種場景,使用字典自帶方法 setdefault :

In [35]: d = {'a':1,'b':2}

In [36]: r = d.setdefault('c',3) # r: 3

In [37]: r
Out[37]: 3

In [38]: d
Out[38]: {'a': 1, 'b': 2, 'c': 3}


In [39]: r = d.setdefault('c',33) # r:3,已經(jīng)存在'c':3的鍵值對(duì),所以setdefault時(shí)d無改變

In [40]: r
Out[40]: 3

In [41]: d
Out[41]: {'a': 1, 'b': 2, 'c': 3}

原文鏈接:https://blog.csdn.net/wohu1104/article/details/125055526

欄目分類
最近更新