我正在使用python 3.5进行一些在线教程,并学会了如何将字符串写入文件并保存。现在我正在尝试写一个函数的内容,但没有运气。
Select orders.OrderDate, orders.OrderID, orders.OrderStatus, customer.FirstName, customer.LastName, product.ProductName , product.Qunatity, branch.BranchName
from orders
inner join customer ON orders.CustomerId = customer.CustomerId
inner join orderline ON orderline.OrderId = orders.OrderID
inner join branch on orders.BranchID = branch.BranchID
inner join orderline.ProductId = product.ProductId;
然后我收到此错误
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()
get_details函数就是这个,
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
我错过了什么。我希望从另一个.py文件中获取该函数并保存内容
答案 0 :(得分:1)
根据您的帖子,我可以看到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 String
Python输入和输出:
f.write(string)将string的内容写入文件,返回写入的字符数。
>>> f.write('This is a test\n')
>>> 15
答案 1 :(得分:0)
您正在调用的方法: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语句,您的脚本应按预期工作
答案 2 :(得分:0)
看起来函数recap3_1.get_details
和recap3_1.get_schooling
直接打印到stdout
而不是返回字符串,这就是为什么你得到None
而不是一个字符串。为了编写结果,您需要将其输出作为字符串。你能修改他们的代码吗?