0

我试图基本上从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
4

2 回答 2

0
for each in f.readline()

仅使用第一行,即 f.readline 的结果。因此,变量 each 将是第一行的每个字符。

如果你使用

for each in f.read().split()

你应该得到你想要的。f.read() 一次读取整个文件, split() 在换行符处拆分(以及所有类型的空格)

除此之外,你应该使用 rw+ 模式打开文件,否则你会得到一个 IOError。

于 2012-12-13T06:49:15.647 回答
0

与您的问题没有直接关系,但我看到阅读您的代码,如果关键字不在您的keylist中,您只会关闭文件。

也许你想搬家

f.close()

低于 else 条件。不过,只是一个想法。

是的,我会接受Hyperboreus的回答:

for line in f.readlines(): #where line 可以很容易地成为你的“每个”

于 2012-12-13T07:44:42.683 回答