Python作业收集器文件I / O.

时间:2013-06-26 20:31:35

标签: python file class function file-io

我正在尝试创建一个可以输入作业名称,类别和付费的程序,我正在尝试将输入的作业名称,类别和付费写入文件来存储数据,但我遇到了问题这样做。

class Job(object):
    def __init__(self, jobName = '', jobCategory = '', jobPay = ''):
        self.jobName = jobName
        self.jobCategory = jobCategory
        self.jobPay = jobPay

    def getName(self):
        self.jobName = input("What is the Job Title: ")

    def getCategory(self):
        self.jobCategory = input("What is the Job Category: ")

    def getPay(self):
        self.jobPay = input("What is the Job Pay: ")

    def displayJob(self):
        print("Job: " + self.jobName)
        print("Job Category: " + self.jobCategory)
        print("Job Pay: " + self.jobPay)
        print()


def Main():
    global NewJob
    NewJob = Job()
    NewJob.getName()
    NewJob.getCategory()
    NewJob.getPay()
    print()
    NewJob.displayJob()
    myFile = open('newFile.txt', 'w')
    myFile.write(NewJob.displayJob())
    myFile.close()

Main()

2 个答案:

答案 0 :(得分:2)

displayJob()打印到stdout,而不是打印到您的文件。你必须返回一个字符串:

def displayJob(self):
    results = [
        "Job: " + self.jobName,
        "Job Category: " + self.jobCategory,
        "Job Pay: " + self.jobPay
    ]

    return "\n".join(results)

或者传递file作为参数,但这看起来有点奇怪:

import sys

def displayJob(self, file=sys.stdout):
    print("Job: " + self.jobName, file=file)
    print("Job Category: " + self.jobCategory, file=file)
    print("Job Pay: " + self.jobPay, file=file)
    print(file=file)

...

NewJob.displayJob(myFile)

答案 1 :(得分:0)

假设问题是什么都没有写入文件。 Job.displayJob()不会返回要写入文件的任何内容,它只会将其显示给stdout。弄清楚你希望对象如何序列化到文件,并有一个返回该字符串的方法。