2012-03-17 2 views
0

나는의 형식으로 txt 파일 가지고있다 :파이썬과 체리 피와 함께, 어떻게 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 

그것은 좋은 것입니다 웹 브라우저 안의 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 (사전 포맷 텍스트) 태그 : 또한

with open('directory', 'r') as f: 
    page = '<pre>%s</pre>' % f.read() 

, 당신은 cgi.escape와 파일 이름을 탈출 고려하는 것이 좋습니다 브라우저는 파일 이름의 특수 문자를 해석하지 않습니다.

+0

도움 주셔서 감사합니다. 그냥 호기심에서 벗어나, 내가 말하고 싶으면 텍스트 파일의 처음 5 줄만 읽으면 되겠습니까? – Synia

+0

@Synia :'... for line in f'를 사용하는 경우,'f'보다는'list (f) [: 5]'를 사용하거나 파일이 크고 원하는 경우에만 사용할 수 있습니다 그것의 조금,'itertools.islice (f, 0, 5)'. – icktoofay

+0

그래서 txt 파일을 조금 가져 가고 싶다면'... for itertools.islice (f, 0,5)'행을 써야할까요? – Synia

관련 문제