Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从textfile读入一个列表,然后写回该列表Python/CGI_Python_Html_Cgi - Fatal编程技术网

从textfile读入一个列表,然后写回该列表Python/CGI

从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

我试图从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
#/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()