首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将函数的内容写入.txt文件

将函数的内容写入.txt文件
EN

Stack Overflow用户
提问于 2016-12-02 04:31:02
回答 3查看 1.1K关注 0票数 0

我正在使用python3.5做一些在线教程,并学习了如何将字符串写入文件并保存它。现在,我正在尝试编写函数的内容,但没有任何运气。

代码语言:javascript
复制
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()

然后我得到了这个错误

代码语言:javascript
复制
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 1

get_details函数就是这样,

代码语言:javascript
复制
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文件中获取函数并保存内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-02 04:42:09

根据您的文章,我可以看到get_details在控制台上打印输出,但它无法判断它是否返回任何内容。

代码语言:javascript
复制
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 String

Python输入和输出:

f.write( string )将字符串的内容写入文件,返回写入的字符数。

代码语言:javascript
复制
>>> f.write('This is a test\n')
>>> 15
票数 1
EN

Stack Overflow用户

发布于 2016-12-02 04:36:51

您正在调用的方法:recap3_1.get_details正在返回None,而不是要写入文件的值。仅仅因为打印到屏幕上的值并不意味着在调用函数时返回这些字符串。尝试:

代码语言:javascript
复制
    test_var = recap3_1.get_details("Mark", "M", 26)
    print(test_var)

您应该看到屏幕上的None打印。如果希望get_details方法返回要写入文件的值,则必须在方法定义中指定。

编辑:既然你已经发布了你的代码,你需要你的方法来返回一个字符串.如果希望像打印输出那样分隔值空间,只需执行以下操作:

代码语言:javascript
复制
    return ' '.join((name, gender, age))

而不是get_details中的print语句,您的脚本应该按照预期工作。

票数 0
EN

Stack Overflow用户

发布于 2016-12-02 04:37:04

它看起来像函数recap3_1.get_detailsrecap3_1.get_schooling直接打印到stdout而不是返回字符串,这就是为什么您要得到一个None而不是一个字符串。为了写入它们的结果,您需要将它们的输出作为字符串。你能修改他们的代码吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40924827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档