python自动化第三周---文件读写
1.python文件對象提供了三個“讀”方法: read()、readline() 和 readlines()。每種方法可以接受一個變量以限制每次讀取的數據量。
- read() 每次讀取整個文件,它通常用于將文件內容放到一個字符串變量中。如果文件大于可用內存,為了保險起見,可以反復調用read(size)方法,每次最多讀取size個字節的內容。
- readlines() 之間的差異是后者一次讀取整個文件,象 .read() 一樣。.readlines() 自動將文件內容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結構進行處理。
- readline() 每次只讀取一行,通常比readlines() 慢得多。僅當沒有足夠內存可以一次讀取整個文件時,才應該使用 readline()。
這三種方法是把每行末尾的'\n'也讀進來了,它并不會默認的把'\n'去掉,需要我們手動去掉。
with open('test1.txt', 'r') as f1:list1 = f1.readlines() for i in range(0, len(list1)):list1[i] = list1[i].rstrip('\n')2.由于文件讀寫時都有可能產生IOError,一旦出錯,后面的f.close()就不會調用。所以,為了保證無論是否出錯都能正確地關閉文件,我們可以使用try ... finally來實現:
try:f = open('/path/to/file', 'r')print(f.read()) finally:if f:f.close()但是每次都這么寫實在太繁瑣,所以,Python引入了with語句來自動幫我們調用close()方法: with open('/path/to/file', 'r') as f:print(f.read())
3.
一個python面試題的例子:
有兩個文件,每個都有很多行ip地址,求出兩個文件中相同的ip地址:
# coding:utf-8
import bisect
with open('test1.txt', 'r') as f1:
list1 = f1.readlines()
for i in range(0, len(list1)):
list1[i] = list1[i].strip('\n')
with open('test2.txt', 'r') as f2:
list2 = f2.readlines()
for i in range(0, len(list2)):
list2[i] = list2[i].strip('\n')
list2.sort()
length_2 = len(list2)
same_data = []
for i in list1:
pos = bisect.bisect_left(list2, i)
if pos < len(list2) and list2[pos] == i:
same_data.append(i)
same_data = list(set(same_data))
print(same_data)
?
轉載于:https://www.cnblogs.com/awen2968/p/10001589.html
總結
以上是生活随笔為你收集整理的python自动化第三周---文件读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工行宇宙乐黑信用卡年费多少?如何减免?
- 下一篇: 花呗的临时额度是什么意思?花呗临时额度领