2012-03-17 3 views
0

私はの形式でtxtファイルを持っている:Pythonとcherrypyでは、どうやってtxtファイルを読み込んでページに表示しますか?

line_1 
line_2 
line_3 

私はリストにそれを読み取ろうとすると、それはtxtファイル内に見えると同じようにウェブページにそれを表示しています。ある行は別の行の下にある。ここに私のコードは

@cherrypy.expose 
def readStatus(self): 

    f = open("directory","r") 
    lines = "\n".join(f.readlines()) 
    f.close() 
    page += "<p>%s</p>" % (lines) 

あるしかし、私はなってきている出力は、次のとおりです。

line_1 line_2 line_3 

誰かが私にそうLINE_1、line_2とline_3をどうするかのようにヒットを与えることができればそれは素晴らしいことですWebブラウザの3つの別々の行に表示されますか?

ありがとうございます。

答えて

1

すべてのファイル名を囲んで段落タグを配置しています。

with open("directory", "r") as f: 
    page = "\n".join("<p>%s</p>" % line for line in f) 

あるいは、より意味的に、あなたは順不同リストですべてを置くことができます::また

with open("directory", "r") as f: 
    page = '<ul>%s</ul>' % "\n".join("<li>%s</li>" % line for line in f) 

、あなたはそれをすべての内部を置くことができるあなたは、おそらく個別に各ファイル名の周り段落タグを置くためのものpre(整形済みテキスト)タグ:

​​

また、あなたがcgi.escapeとファイル名をエスケープ検討する必要がありますブラウザはファイル名に特殊文字を解釈しません。

+0

ありがとうございました。ただ好奇心から、もし私が言いたいのであれば、私はテキストファイルの最初の5行だけを読んで変わるでしょうか? – Synia

+0

@Synia: '... for line in f'を使うもののうち、' f'ではなく 'list(f)[:5]'を使うこともできます。それの少し、 'itertools.islice(f、0、5)'。 – icktoofay

+0

だからちょっとtxtファイルを取りたいときは、 'itertools.islice(f、0,5)'の行に '... for lineを書きます。 – Synia

関連する問題