python學習筆記(11)--文件與數據格式化


文件的概念:

文件是數據的抽象和集合,是存儲在輔助存儲器上的數據序列,文件是數據存儲的一種形式,文件的展現形態,文本文件和二進制文件。

文本文件輸出:

f.txt文件保存:“我是中國人”

>>> tf=open("d:/python_test/f.txt", "rt")
>>> tf
<_io.TextIOWrapper name='d:/python_test/f.txt' mode='rt' encoding='cp936'>
>>> print(tf.readline())
我是中國人
>>> tf.close
<built-in method close of _io.TextIOWrapper object at 0x0000000002F81DC8>

二進制文件輸出:

>>> bf=open("d:/python_test/f.txt", "rb")
>>> print(bf.readline())
b'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'
>>> bf.close
<built-in method close of _io.BufferedReader object at 0x0000000002FD8F68>

文件的打開和關閉

文件處理步驟:打開->操作->關閉

open : 文件的存儲狀態->文件的占用狀態

close: 文件的占用狀態->文件的存儲狀態

常用的讀寫文件操作:a.read(size)  a.readline(size)  a.readlines(hint)  a.write(s)  a.writelines(lines)  a.seek(offset)

1、文件的打開

<變量名> = open(<絕對路徑/相對路徑/文件名>, <打開模式>)

'r'  只讀模式,默認值,如果文件不存在,返回FileNotFoundError

'w' 覆蓋寫模式,文件不存在則創建,存在則完全覆蓋

'x' 創建寫模式,文件不存在則創建,存在則返回FileExistError

'a' 追加寫模式,文件不存在則創建,存在則在文件最后追加內容

‘b’ 二進制文件形式

't' 文本文件模式,默認值

‘+’ 與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能

f = open('f.txt', 'a+')    文本形式打開,追加寫模式 + 讀文件

f = open('f.txt', 'b')    二進制形式打開,讀模式

2、文件的關閉

<變量名>.close()

如果調用了open沒有調用close,程序運行過程中,文件就一直處於打開模式,在程序退出后,python的解釋器會將文件關閉。要注意調用close。

3、文件內容的讀取

<f>.read(size = -1)    讀入全部內容,如果輸入參數,讀入前size長度,指針下移

<f>.readline(size = -1) 讀入一行內容,如果給出參數,讀入該行的前size長度,指針下移

<f>.readlines(hint=-1) 讀入文件所有行,以每行為元素形成列表,如果給出參數,讀入前hint行

fname=input("請輸入文件名稱:")
fo = open(fname,"r")
for line in fo.readlines():
    print(line)
fo.close()

一次性讀入文件,會消耗很多內存,一般采用分行讀入,逐行處理的思路

fname=input("請輸入文件名稱:")
fo = open(fname,"r")
for line in fo:
    print(line)
fo.close()

4、數據的文件寫入

<f>.write(s)  向一個文件中寫入字符串或者字節流,指針下移

<f>.writelines(lines) 將一個元素全為字符串的列表寫入文件 ,直接拼接,不換行,指針下移

ls=["中國","法國","英國"]
tf.writelines(ls)
“中國法國英國”

<f>.seek(offset) 改變當前文件操作指針的位置,offset的含義如下:0-文件開頭,1-當前位置,2-文件結尾

fo=open("output.txt",'w+')
ls=["中國","法國","英國"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()
輸出:
"中國法國英國"    

5、實例 從文件中讀取數據繪制圖形

#autodraw
import turtle as t
t.setup(800,600,0,0)
t.pencolor("read")
t.pensize(5)
datals = []
f = open("d:/python_test/data.txt")
for line in f:
     line = line.replace("\n","")    '''將\n替換為,'''
     datals.append(list(map(eval, line.split(","))))  /map 對第二個參數中的每一個元素,執行第一個參數的函數/
     datals
f.close()
for i in range(len(datals)):
     t.pencolor(datals[i][3], datals[i][4], datals[i][5])
     t.fd(datals[i][0])
     if datals[i][1]:
          t.right(datals[i][2])
     else:
          t.left(datals[i][2])

舉一反三:

1、自動化思維:數據和功能分離,數據驅動的自動運行

2、接口化設計:格式化設計接口,清晰明了

3、二維數據應用:應用維度組織數據,二維數據最常用

4、擴展接口設計,增加更多控制接口

5、擴展功能設計

6、擴展應用需求

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM