迭代器的功能:提供了可擴展的迭代器接口;增強了列表迭代和字典迭代中的性能;創(chuàng)建真正的迭代接口,而不是原來的隨機對象訪問;與所有以及存在的用戶定義的類以及擴展的模擬序列和映射的對象向后兼容;迭代非序列集合時可以創(chuàng)建更簡潔可讀的代碼。從根本上來說,迭代器有一個next()方法的對象而不是通過索引來技術,當循環(huán)機制需要下一個項時調用迭代器的next()方法可以獲得它,條目全部取出后會引發(fā)一個StopIteration異常,這并不表示錯誤發(fā)生,只是告訴外部調用者迭代完成。迭代器不能向后以后,不能回到開始,不能復制一個迭代器,如果再次迭代同個對象只能去創(chuàng)建另一個迭代器對象。
>>> tuple1=('a',21,'34')>>> i=iter(tuple1)>>> i.__next__()'a'>>> i.__next__()21>>> i.__next__()'34'>>> i.__next__()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration>>> file1=open('d:/study/python/test.txt','w+')>>> file1.writelines("a/n")>>> file1.writelines("b/n")>>> file1.close()>>> file1=open('d:/study/python/test.txt','r')>>> for line in file1:... PRint(line)...ab>>> file1.close()在迭代序列的時候不可以修改這個對象,除列表外其他序列都是不可變的,修改這些對象將會導致異常
>>> mDict={'a':1,'b':2,'c':3}>>> for eachKey in mDict:... print(eachKey,mDict[eachKey])... del mDict[eachKey]...a 1Traceback (most recent call last): File "<stdin>", line 1, in <module>RuntimeError: dictionary changed size during iteration函數(shù)open提供了初始化輸入/輸出(I/O)操作的通用接口,open()內建函數(shù)成功打開文件后悔返回一個文件對象,否則引發(fā)一個錯誤,當操作失敗,Python會產生一個IOError異常:
handle = open(fileName,access_mode='r',buffering=-1)| 文件模式 | 操作 |
|---|---|
| r | 以讀方式打開 |
| rU/Ua | 以讀方式打開,同時提供通用換行符支持 |
| w | 以寫方式打開 |
| a | 以追加模式打開 |
| r+ | 以讀寫模式打開 |
| w+ | 以讀寫模式打開 |
| a+ | 以讀寫模式打開 |
| rb | 以二進制讀模式打開 |
| wb | 以二進制寫模式打開 |
| ab | 以二進制追加模式打開 |
| rb+ | 以二進制讀寫模式打開 |
| wb+ | 以二進制讀寫模式打開 |
| ab+ | 以二進制讀寫模式打開 |
buffering用于指示訪問文件所采用的緩沖方式,0表示不緩沖,1表示只緩沖一行數(shù)據(jù),大于1的值代表使用給定值作為緩沖區(qū)大小,不提供該參數(shù)或者給定負值代表使用系統(tǒng)默認緩沖機制。
| 方 法 | 操 作 |
|---|---|
| file.close() | 關閉文件 |
| file.fileno() | 返回文件描述符 |
| file.flush() | 刷新文件的內部緩沖區(qū) |
| file.isatty() | 判斷file是否是一個類tty設備 |
| file.next() | 返回文件的下一行,在沒有其他行駛返回StopIteration異常 |
| file.read(size=-1) | 從文件讀取size個字節(jié),當為給定size或給負值時讀取剩余所有字節(jié)作為字符串返回 |
| file.readline(size=-1) | 從文件中讀取并返回一行,或返回最大size個字符 |
| file.readlines(size=0) | 讀取文件的所有行并作為一個列表返回,如果給定size且>0,那么將返回總和接近為size字節(jié)的行 |
| file.seek(off,whence=0) | 在文件中移動文件指針,從whence(0文件起始,1當前位置,2文件末尾)偏移off字節(jié) |
| file.tell() | 返回當前在文件中的位置 |
| file.truncate(size=file.tell()) | 截取文件到最大size字節(jié),默認為當前文件位置 |
| file.write(str) | 向文件寫入字符串 |
| file.writelines(seq) | 向文件寫入字符串序列seq |
| 屬 性 | 描 述 |
|---|---|
| file.closed | true關閉,否則false |
| file.encoding | 文件使用的編碼方式 |
| file.mode | 文件打開時使用的訪問模式 |
| file.name | 文件名 |
| file.newlines | 未讀取到行分隔符時為None,只有一種行分隔符時為一個字符串,當文件有多種類型的行結束符時,則為一個包含所有檔期那所遇到的行結束符的列表 |
新聞熱點
疑難解答