我试图基本上从keywords.txt获取数据并将其放入列表中。然后,如果用户输入的表单中的数据不在列表中,则会将其写入文件,并根据列表中是否存在而将用户带到某个网页。我基本上希望文件只是一行中只有一个单词,但首先我只是想让它工作。
我无法理解用户输入数据的变量是否有意义。
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
keyword = form.getvalue('keyword')
print 'Content-type: text/html\r\n\r'
print '<html>'
print '<h1>Please enter a keyword of your choice</h1>'
print '<form action="results.cgi" method="post">'
print 'Keyword: <input type="text" name="keyword"> <br />'
print '<input type="submit" value="Submit" />'
print '</form>'
print '</html>'
keylist = []
f = open('keywords.txt', 'rw')
for each in f.readline():
keylist.append(each)
if keyword in keylist:
print 'Location: %s' % # my url
else:
f.write(keyword)
f.close()
print 'Location: %s' % # my second url
答案 0 :(得分:0)
for each in f.readline()
仅使用第一行,即f.readline的结果。因此,每个变量都是第一行的每个字符。
如果您使用
for each in f.read().split()
你应该得到你想要的东西。 f.read()一次读取整个文件,split()拆分换行符(以及所有类型的空格)
除此之外,您应该使用rw + mode打开文件,否则会出现IOError。
答案 1 :(得分:0)
与您的问题没有直接关系,但是,我看到,您只关闭文件,如果关键字 不在键列表中。
也许你想搬家
f.close()
低于其他条件。但是,这只是一个想法。
是的,我会选择 Hyperboreus 的答案:
对于f.readlines()中的行: #where行可以很容易地成为你的'每个'