从textfile读入一个列表,然后写回该列表Python/CGI
我试图从keywords.txt中获取数据,并将其放入列表中。然后,如果用户在表单中输入的数据不在列表中,它将被写入文件,并根据是否在列表中,将用户带到某个网页。我基本上希望该文件只是一行一个字的话,但首先我只是想让它的工作充满的话 如果有意义的话,我很难理解用户输入的数据是什么变量从textfile读入一个列表,然后写回该列表Python/CGI,python,html,cgi,Python,Html,Cgi,我试图从keywords.txt中获取数据,并将其放入列表中。然后,如果用户在表单中输入的数据不在列表中,它将被写入文件,并根据是否在列表中,将用户带到某个网页。我基本上希望该文件只是一行一个字的话,但首先我只是想让它的工作充满的话 如果有意义的话,我很难理解用户输入的数据是什么变量 #!/usr/bin/env python import cgi import cgitb cgitb.enable() form = cgi.FieldStorage() keyword = form.getv
#!/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
#/usr/bin/env python
导入cgi
进口cgitb
cgib.enable()
form=cgi.FieldStorage()
关键字=form.getvalue('keyword')
打印“内容类型:text/html\r\n\r”
打印“
打印“请输入您选择的关键字”
打印“
打印“关键字:
”
打印“
打印“
打印“
keylist=[]
f=打开('keywords.txt','rw')
对于f.readline()中的每个:
keylist.append(每个)
如果关键字列表中有关键字:
打印位置:%s“%#我的url
其他:
f、 写入(关键字)
f、 关闭()
打印位置:%s“%#我的第二个url
仅使用第一行,即f.readline的结果。因此,每个变量都是第一行的每个字符
如果你使用
for each in f.read().split()
你应该得到你想要的。f、 read()一次读取整个文件,split()在换行符(以及所有类型的空格)处拆分
除此之外,您应该使用rw+模式打开文件,否则会出现IOError。与您的问题没有直接关系,但阅读您的代码后,我发现,您只关闭文件,如果关键字在您的关键字列表中是而不是 也许你想搬家 f、 关闭() 低于其他条件。不过,这只是一个想法 是的,我同意Hyperboreus的回答: 对于f.readlines()中的行:#其中的行可以很容易地成为您的“每个”
谢谢你的回答。但是,我仍然想知道如何告诉用户输入的变量是什么,以便我可以将其添加到我的文件中。如果你现在看到我有“If keyword in keylist”和“f.write(keyword)”,但这不正确,请尝试:
keyword=form['keyword']。value
for each in f.read().split()