0

基本的にkeywords.txtからデータを取得してリストに入れようとしています。次に、ユーザーがフォームに入力したデータがリストにない場合、そのデータはファイルに書き込まれ、リストにあるかどうかに応じて特定の Web ページに移動します。私は基本的に、ファイルを1行に1語だけでいっぱいにしたいのですが、最初はそれを機能させようとしています。

ユーザーが入力したデータがどの変数であるかを理解するのに苦労しています。

#!/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

あなたの質問とは直接関係ありませんが、コードを読んで、キーワードkeylistない場合にのみファイルを閉じることがわかりました。

動きたいかも

f.close()

else 条件の下。ただし、単なるアイデアです。

そして、はい、私はHyperboreusからの答えに行きます:

for line in f.readlines(): #where line は簡単に「each」になる可能性があります

于 2012-12-13T07:44:42.683 に答える
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 に答える