我最近尝试将错误写入一个文件,我在一些研究后设法做了。现在的问题是我正在尝试将计算结果写入文件,但我似乎无法获得我用来协同工作的两个函数。有人可以查看我的代码并帮助我吗?
(截至目前,我已经注释掉了我的函数尝试将我从calculator()获得的结果写入一个名为“result.txt”的单独文件中)
import sys
import logging
WRITE = "w"
APPEND = "a"
READWRITE = "r+"
fileName = "error.txt"
fileName2 = "result.txt"
logging.basicConfig(filename=fileName, level=logging.ERROR)
def main():
checkError()
return
def calculator():
firstNumber = int(input("Pleas enter a number: "))
secondNumber = int(input("Pleas enter a number: "))
result = firstNumber / secondNumber
print(result)
return
def checkError():
try:
calculator()
except:
error = sys.exc_info()[0]
logging.error(msg=error)
print("Error logged to:",fileName )
return
# def writeResult():
# myFile = open(fileName2, mode= WRITE)
# myFile.write()
# myFile.close()
# return
main()
答案 0 :(得分:0)
你永远不会调用writeResult()函数。你应该像writeSesult()这样添加一个参数:
def writeResult(string):
myFile = open(fileName2, mode= WRITE)
myFile.write(string)
myFile.close()
return
其中str是将写入文件的值。然后你必须打电话给它。我会在checkError()中调用它,因为那里你调用了calculator()。要获得计算器计算的值,您需要将其返回。要做到这一点,你所要做的就是将结果变量添加到return语句中,所以函数将如下所示:
def calculator():
firstNumber = int(input("Pleas enter a number: "))
secondNumber = int(input("Pleas enter a number: "))
result = firstNumber / secondNumber
print(result)
return result
然后你应该在checkError()中调用它并将它作为参数传递给writeResult():
def checkError():
try:
writeResult(calculator())
except:
error = sys.exc_info()[0]
logging.error(msg=error)
print("Error logged to:",fileName )
return
所以基本上你从calculator()获得的值将作为参数传递给writeResult。
答案 1 :(得分:0)
您的writeResult()
功能是这里最大的问题。 Python中的write()
函数接受一个字符串参数,它实际输出到文件中(例如,参见the Python tutorial)。因此,您需要将结果放在该函数调用中。为此,您必须向函数添加参数。所以它变成了:
def writeResult(result):
myFile = open(fileName2, mode= WRITE)
myFile.write(str(result))
myFile.close()
我在那里使用str(result)
因为result
将是数字类型,因此您需要将其显式转换为字符串。否则,Python将抛出错误。
另请注意,我删除了最后一行return
。在Python中,当没有返回任何内容时,您不需要显式地放置return语句。
现在您必须更改calculator()
以将结果传递给此函数。一种方法是返回结果,然后在writeResult
函数中调用main()
。另一种方法是在计算器函数中调用writeResult
,方法是将最后一行更改为writeResult(result)
(同样,不需要空返回语句)。