python檔案處理

2021-05-24 15:53:18 字數 1779 閱讀 7116

def cal(input="input.txt",output="output.txt"):   

#cal方法為主程式,推薦這樣做而不是python.exe xx.py *** ***。預設引數為python目錄的兩個txt,如為其他檔案自己指定。

infile = file(input,"r")

#開啟源資料檔案

outfile = file(output,"w")

#開啟目標檔案

linedata = "linedata"

#初始化儲存每行資料的變數

status = {}

#初始化處理的資料空間。統計的資料以字典形式儲存。字典的key為人的名字,value為乙個2維列表,前乙個數為[傳送次數,傳送位元組]的列表巢狀,後乙個數為[接受次數,接受位元組]的列表巢狀。

writedata = ""

# 初始化最後準備寫入的資料

#叨一顏是濱捏while true :

linedata = infile.readline() #讀取一行資料

data = linedata[:-1].split(",") #以「,」為分割符(如為其他符號自己改)

if linedata == "":

break #如果行資料為空(到檔案末尾了)則跳出迴圈

data[2]=int(data[2]) #將「傳輸位元組」轉化為數字

if not status.has_key(data[0]):

status[data[0]] = [[1,data[2]],[0,0]] #檢驗如果不存在傳送人名字則新建乙個key,其value為[1(傳送一次),傳送位元組數],[0(接受0次),0(傳送0位元組)]

else :

status[data[0]][0][1] += data[2]

status[data[0]][0][0] += 1

#如存在人名,則傳送次數+1,傳送位元組數相加

if not status.has_key(data[1]):

status[data[1]] = [[0,0],[1,data[2]]]

else :

status[data[1]][1][1] += data[2]

status[data[1]][1][0] += 1

#這個是接受次數和接受位元組數的統計

for (name,[outstatus,instatus]) in status.items() :

writedata += name+","+str(outstatus[0])+","+str(outstatus[1])+","+str(instatus[0])+","+str(instatus[1])+"/n"

#準備寫入的資料,包括 名字 逗號 傳送次數 逗號 傳送位元組 逗號 接受次數 逗號 接受位元組 換行符(如要其它輸出格式自己改)

outfile.write(writedata) #將資料寫入目標檔案

infile.close()

outfile.close() #關閉檔案

呼叫方法為(假設檔名為 status.py)。在python裡面:

〉〉〉import status #載入status模組

〉〉〉status.cal() #呼叫cal方法

如果你還想用你原來的呼叫方法,就在cal方法下面加入以下內容

if __name__=='__main__':

cal()

#在windows下輸入 python.exe status就可以使用了

python 檔案處理

1.開啟檔案 open a.txt 當前目錄下的a.txt open root a.txt 開啟某個目錄下的檔案 2.按行顯示檔案 a open a.txt a.readline ni hao n a.readline wo xianzai hen xiang ni n a.readline ni ...

Python檔案處理

open name mode buf read size readline size readlines size 這裡的size是指,io定義的default buffer size為單位大小 iter 迭代器迭代每行 write str writelines sequwence of strin...

Python檔案處理

with open pi digits.txt as file object contents file object.read print contents 兩個注意點 filename pi digits.txt with open filename as file object forline...