我正在使用python3.5做一些在线教程,并学习了如何将字符串写入文件并保存它。现在,我正在尝试编写函数的内容,但没有任何运气。
from RECAPS import recap3_1
recap3_1.get_details("Mark", "M", 26)
recap3_1.get_schooling(30000,260,900)
fw = open("Details.txt", "w")
fw.write(recap3_1.get_details("Mark", "M", 26))
fw.close()然后我得到了这个错误
Mark Male 26
Traceback (most recent call last):
29360
File "E:/PyProjects/YoutubeProject/RECAPS/recap3.py", line 8, in <module>
fw.write(recap3_1.get_details("Mark", "M", 26))
Mark Male 26
TypeError: write() argument must be str, not None
Process finished with exit code 1get_details函数就是这样,
def get_details(name, gender, age=0):
if age < 18:
print("You are too young to register")
return
if len(name) < 2:
print("Looks like your name is too short")
return
if gender is "M":
gender = "Male"
elif gender is "F":
gender = "Female"
else:
gender = "Unknown"
print(name, gender, age)我错过了什么。我希望从另一个.py文件中获取函数并保存内容。
发布于 2016-12-02 04:42:09
根据您的文章,我可以看到get_details在控制台上打印输出,但它无法判断它是否返回任何内容。
def get_details(name, gender, age):
info = "{0} {1} {2}".format(name, gender, age)
print(info) # print on console
return info # you have to return a StringPython输入和输出:
f.write( string )将字符串的内容写入文件,返回写入的字符数。
>>> f.write('This is a test\n')
>>> 15发布于 2016-12-02 04:36:51
您正在调用的方法:recap3_1.get_details正在返回None,而不是要写入文件的值。仅仅因为打印到屏幕上的值并不意味着在调用函数时返回这些字符串。尝试:
test_var = recap3_1.get_details("Mark", "M", 26)
print(test_var)您应该看到屏幕上的None打印。如果希望get_details方法返回要写入文件的值,则必须在方法定义中指定。
编辑:既然你已经发布了你的代码,你需要你的方法来返回一个字符串.如果希望像打印输出那样分隔值空间,只需执行以下操作:
return ' '.join((name, gender, age))而不是get_details中的print语句,您的脚本应该按照预期工作。
发布于 2016-12-02 04:37:04
它看起来像函数recap3_1.get_details和recap3_1.get_schooling直接打印到stdout而不是返回字符串,这就是为什么您要得到一个None而不是一个字符串。为了写入它们的结果,您需要将它们的输出作为字符串。你能修改他们的代码吗?
https://stackoverflow.com/questions/40924827
复制相似问题