使用for循環遍歷文件

使用 Python 訪問文件,首先得先打開文件,在 Python 下打開文件能夠使用 open 內置函數python

openide

r——以只讀方式打開
w——以寫的方式打開
a——以追加模式打開
r+——以讀寫模式打開
w+——以讀寫模式打開(參見w)
a+——以讀寫模式打開(參見a)
rb——以二進制讀模式打開(binary)
wb——以二進制寫模式打開(參見w)
ab——以二進制追加模式打開(參見a)
rb+——以二進制讀寫模式打開(參見r+)
wb+——以二進制讀寫模式打開(參見w+)
ab+——以二進制讀寫模式打開(參見a+)函數

with openspa

咱們試着打開一個文件以下:code

In [1]: open('/tmp/tmp.txt')
Out[1]: <open file '/tmp/tmp.txt', mode 'r' at 0x1ba6150>

In [2]: fd=open('/tmp/tmp.txt')     #用一個參數fd接收一下

In [3]: type(fd)              #能夠看到fd是文件類型
Out[3]: file

文件會有不少方法能夠使用,好比 fd.close,打開一個文件也須要關閉它:對象

In [4]: fd.
fd.close       fd.flush       fd.next        fd.seek        fd.writelines
fd.closed      fd.isatty      fd.read        fd.softspace   fd.xreadlines
fd.encoding    fd.mode        fd.readinto    fd.tell        
fd.errors      fd.name        fd.readline    fd.truncate    
fd.fileno      fd.newlines    fd.readlines   fd.write       

In [5]: fd.close()         #關閉文件

而後咱們再已讀寫的方式打開以前那個文件:內存

In [6]: fd=open('/tmp/tmp.txt','w')          #以讀寫的方式打開這個文件

In [7]: fd
Out[7]: <open file '/tmp/tmp.txt', mode 'w' at 0x1ba6270>

In [8]: fd.wri
fd.write       fd.writelines  

In [8]: fd.write("a")                        #往文件裏面寫入一個a,在這個時候會覆蓋文件原有的內容

In [9]: fd.clo
fd.close   fd.closed  

In [9]: fd.close()                               接着咱們關閉這個文件

接着咱們以讀寫的方式寫入一個「123」,而後再往文件裏面追加一個「456」:字符串

In [10]: fd=open('/tmp/tmp.txt','w')

In [11]: fd.write("123\n")

In [12]:

In [12]: fd.close()

In [13]:

In [13]: fd=open('/tmp/tmp.txt','a')

In [14]: fd.write("456\n")

In [15]: fd.close()

文件內容變化以下:it

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat /tmp/tmp.txt
123
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat /tmp/tmp.txt
123
456

以只讀模式打開文件以下:class

In [16]: fd=open('/tmp/tmp.txt','r')

In [17]: fd.read()                  
Out[17]: '123\n456\n'

In [18]: fd.read()                   
'''由於讀取第二遍的時候是日後讀取的,
後面沒有內容,因此返回的就是空的'''

Out[18]: ''

In [19]: fd.read()
Out[19]: ''

read方法的比較:

In [19]: fd.read()                  #返回的是一個字符串
Out[19]: ''

In [20]: fd.readline()            #返回的是一個字符串
Out[20]: ''

In [21]: fd.readlines()          #返回的是一個列表
Out[21]: []

咱們把打開一個文件的操做腳本寫入一個文件:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py
#!/usr/local/python3/bin/python

fd=open("/tmp/tmp.txt")
for i in fd.readlines():
    print(i)
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123

456

[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

由上面咱們能夠看到打開文件內容默認會顯示空行,咱們去掉空行,以下所示:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py       
#!/usr/local/python3/bin/python

fd=open("/tmp/tmp.txt")
for i in fd.readlines():
    print(i,end='')
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123
456
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

咱們通常建議在實際讀取文件的時候去掉 read 方法,由於當文件很是大的時候,讀取出來將消耗很大一部分的內存,通常直接進行以下代碼便可:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py   
#!/usr/local/python3/bin/python

fd=open("/tmp/tmp.txt")
for i in fd:       #這樣遍歷的就是一個對象,對象會一行一行的取值讀出來
    print(i,end='')
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123
456
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
相關文章
相關標籤/搜索