2014年4月12日 星期六

[python] 資料輸出輸入方法

在科學計算上經常會使用的檔案的輸出以及輸入,在這方面python提供了一些功能可以使用

過去我會使用open函數,使用方式如下:

fi=open('workfile', 'r') ##讀取模式
fo=open('workfile', 'w') ##寫入模式
python提供兩種方式存取檔案,而打開檔案以後,存檔的方式更是相當簡單,例如以下為存檔

fo.write( string ) ##輸入的格式為字串
當然,寫入時的字串也可以經過格式化再輸出,像是以下輸出 1 2為例

fo.write(“%d\t%d” % (1,2))
則可以輸出 1 2至檔案中,相關的格式化方式和C很類似
而讀取的方式也很簡單

fo.read(字元數)
fo.readline() 
基本上是比較常用後者,因為這可以搭配string的一個方法 split 來切斷陣列
假設目前有一個檔案 data.dat 如下:

1  1.1
2 1.2
3 3.3
則讀取這個陣列使用方式如下:


x=[]
y=[]
fo=open("arr.dat")
while 1:
        line=fo.readline()
        if line=="":
                break
        line=line[:len(line)-1].split("\t")
        x.append(line[0])
        y.append(line[1])


以上是一般情況下讀取檔案的方法,然而在科學計算上,python提供了一組更加強大的工具包:numpy
在這函式庫中,也有一組主管檔案輸出輸入的函式──loadtxt 和 savetxt,可以直接輸出輸入在numpy中所定義的矩陣,使用方式如下:


from numpy import loadtxt,savetxt,zeros
arr=loadtxt("arr.dat")
x=zeros((len(arr),1))
y=zeros((len(arr),1))
data=zeros((len(arr),2))
for i in range(len(arr)):
        x[i]=arr[i][0]
        y[i]=arr[i][1]
        data[i][0]=x[i]
        data[i][1]=y[i]
savetxt("arr2.dat",data)

沒有留言:

張貼留言