从HTML获取值并打印到文件的Test.py代码会收到回溯错误 为什么文件描述符的错误正在发生。我是新手。
#!/usr/bin/python
import cgi
def get_data():
'''
This function writes the HTML data into the file
'''
print "Content- type : text/html\n"
form = cgi.FieldStorage()
f = open("abc.txt","w")
f.write(form.getvalue('firstname'))
f.write(form.getvalue('lastname'))
f.write(form.getvalue('age'))
f.write(form.getvalue('gender'))
f.close()
#print "Hello ", Fname, Lname, Age, Gender
get_data()
Tracebacjk错误:
Traceback (most recent call last):
File "test.py", line 33, in <module>
get_data()
File "test.py", line 25, in get_data
f.write(form.getvalue('firstname') + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
我的HTML源文件
<html>
<head>
<title>INFORMATION</title>
</head>
<body>
<form action = "/cgi-bin/test.py" method = "post">
FirstName:
<input type = "text" name = "firstname" /><br>
LastName:
<input type = "text" name = "lastname" /><br>
Age:
<input type = "text" name = "age" /><br>
Gender:
<input type="radio" name="gender" value="male" /> Male
<input type="radio" name="gender" value="female" /> Female
<input type = "submit" name = "submit "value = "SUBMIT">
<input type = "reset" name = "reset" value = "RESET">
</form>
</body>
添加了html文件。请检查
答案 0 :(得分:1)
代码以写入模式(w
)打开文件。
您无法迭代使用写入模式打开的文件。
如果要将传递的POST数据写入文件,只需写入即可。 (没有for
循环)。如果您希望值以行分隔,请附加换行符(\n
)。
f = open("abc.txt","w")
f.write(form.getvalue('firstname', '?') + '\n')
f.write(form.getvalue('lastname', '?') + '\n')
f.write(form.getvalue('age', '?') + '\n')
f.write(form.getvalue('gender', '?') + '\n')
f.close()
更优先使用with
:
with open("abc.txt","w") as f:
f.write(form.getvalue('firstname', '?') + '\n')
f.write(form.getvalue('lastname', '?') + '\n')
f.write(form.getvalue('age', '?') + '\n')
f.write(form.getvalue('gender', '?') + '\n')
您是否使用for
执行以下操作?
with open("abc.txt", "w") as f:
for param in ['firstname', 'lastname', 'age', 'gender']:
f.write(form.getvalue(param, '?') + '\n')