2010-10-17 73 views
0

我是編程新手,在編寫處理文件的程序時遇到困難。該計劃是讀取一個文件,計算員工工資和更新的YTD工資總額。計算完成後,程序將寫入一個新文件。python賦值的困難

這是我到目前爲止有:

empName = "" 
prevYTD = 0.0 
payRate = 0.0 
hoursWorked = 0.0 
recordCount = 0 

def startUp(): 
    global empFile 
    print "\n\n" + "PAYROLL REPORT".center(110)+"\n" 
    print "Employee Name".ljust(30) + "Previous YTD".ljust(18) + \ 
      "Updated YTD".ljust(18) + "Pay Rate".ljust(13) + \ 
      "Hours Worked".ljust(19) + "Current Pay".ljust(8) 
    print "-"* 109 

    jobInfo = open("payroll_Assignment#7.txt", "r") 

def readFile(): 
    global empName, prevYTD, payRate, hoursWorked, eof 
    empRec = jobInfo.readline() 
    if empRec == "": 
     eof = True 
    else: 
     empName = empRec[:25] 
     prevYTD = float(empRec[25:40]) 
     payRate = float(empRec[40:55]) 
     hoursWorked = float(empRec[55:]) 
     eof = False 

def processRecords(): 
    global recordCount 
    while not eof: 
     recordCount +=1 
     printRecord() 
     readFile() 


def printRecord(): 
    print empName, prevYTD, payRate, hoursWorked 


def closeUp(): 
    jobInfo.close() 
    print "\nNumber of records in the file was",recordCount 

startUp() 
readFile() 
processRecords() 
printRecord() 
closeUp() 

我的問題是使一個新的文件。該程序假設寫入一個新文件,我不知道該怎麼做。對不起,因爲如此笨拙,我對此很陌生。

+6

我們知道程序應該做什麼,我們知道你到目前爲止做了什麼,但我們**不知道你的問題是什麼...... – 2010-10-17 18:40:14

+0

如果你沒有問一個具體的問題,你將不會得到任何答案。 – 2010-10-17 18:40:54

+3

不要用這種方式使用全局變量,不要將readFile名稱用於只讀取一行的函數。使用參數功能! – 2010-10-17 19:54:19

回答

1

不知道是什麼問題,但一些習語可以讓你輕鬆。

  1. 您可以避免測試EOF和while循環。

文件是可迭代的,因此您可以迭代它。

for line in open('myfile','r'): 
    doSomething(line) 

見細節處:http://docs.python.org/tutorial/inputoutput.html

[編輯:根據調整後的問題]

打開新文件進行寫操作應該很容易在Python

>>> logfile = open('test.log', 'w') # Opens a new file 
>>> logfile = open('test.log', 'a') # Opens a existing file to append information 

看Python教程中打開文件的各種模式

0

謝謝您的解答。該計劃將讀取一個文件,計算員工工資並更新本年迄今總計。計算完成後,程序將寫入一個新文件。我無法弄清楚如何進行計算,製作,寫入或保存更新的文件。

+2

您可以編輯您的問題並將其添加到該問題。之後請刪除這個「答案」,因爲顯然它不是你的問題的答案。 – 2010-10-17 18:59:54

+0

我編輯了這個問題和我的答案。你可以刪除你的回覆。使用評論,當你想回復他人的回覆和帖子。 – pyfunc 2010-10-17 19:10:21

+0

兩個格雷格斯?或格雷格有兩個圖標? – 2010-10-17 20:00:52