2013-04-15 96 views
2

我們有一個test.py應顯示一個.png文件和.txt文件在同一瀏覽器中。下面是我的代碼:如何使用python顯示.txt文件內容到瀏覽器

print "Content-type: image/png\n" 
print file(r"/var/www/cgi-bin/testpie.png", "rb").read() 
myurl = "file://var/www/html/test.txt" 

webbrowser.open(myurl) 

但我只得到.png在瀏覽器中的文件。那麼如何在瀏覽器中使用python顯示?

+2

直接使用'file()'很不尋常:建議使用'open()',這是打開文件的標準方式。此外,你不需要在路徑中使用原始字符串,因爲它不包含任何轉義('\')字符。 – EOL

+0

你的代碼混淆了兩件事。 'webbrowser.open()'用於在運行腳本的同一臺機器上的Web瀏覽器中打開一個URL。如果您在CGI/WSGI腳本中使用它,它不會影響作爲客戶端連接的Web瀏覽器;它會在_server_上打開一個瀏覽器。 – abarnert

回答

1

如果你想顯示兩種類型的數據,那麼你需要:

  • 有兩個單獨的HTTP請求,其中一個可以嵌入在其它
  • 使用的數據格式(如HTML而不是文本,將PNG作爲URI與data:方案一起嵌入)。

您無法同時返回文本文檔和PNG圖像。

0

您可以使用包含文本內容和圖像的Python創建一個簡單的HTML文件,並在瀏覽器中打開該文件。

4

瀏覽器顯示HTML文檔。 HTML文檔可以包含div,span,p等標籤中的文本,只需將文本包含在元素中即可。例如,<div>Hello!</div>顯示文本Hello。但它們不直接包含圖像;相反,它們包括鏈接到圖像,作爲img標記的src。例如,<img src="http://example.com/foo.png">顯示foo.png圖像。

所以,有兩種方法可以做你想做的。


簡單的方法是,以暴露2個資源(與單獨的網址):(1)PNG圖像,和(2)包含鏈接到PNG圖像(和一個HTML頁面包含文本直)。

例如...

testpie_image.py:

print "Content-type: image/png\n" 
print open(r"/var/www/cgi-bin/testpie.png", "rb").read() 

testpie.py:現在

print """Content-type: text/html 

<html><head></head><body> 
<img src="testpie_image.py" /> 
<div>{}</div> 
</body></html> 
""".format(open(r"/var/www/html/test.txt").read()) 

,如果有人瀏覽到http://example.com/cgi-bin/testpie.py,將觸發你的第二個腳本,所以他們將會得到如下的HTML頁面:

<html><head></head><body> 
<img src="testpie_image.py" /> 
<div>Blah blah this is my text file.</div> 
</body></html> 

然後他們的瀏覽器會跟着鏈接到http://example.com/cgi-bin/testpie-image.py,這會觸發你的第一個腳本,所以他們會得到PNG圖像。


更困難的方法是使用一種特殊的URL方案稱爲data:,它可以讓你在線嵌入數據,如果它是一個單獨的資源的鏈接。你必須做一些更多的工作,以嵌入它,但它意味着你只需要一個URL,而不是兩個:現在

print """Content-type: text/html 

<html><head></head><body> 
<img src="data:image/png;base64,{}"</img> 
<div>{}</div> 
</body></html> 
""".format(open(r"/var/www/cgi-bin/testpie.png", "rb").read().encode("base64"), 
      open(r"/var/www/html/test.txt").read()) 

,當有人瀏覽到http://example.com/cgi-bin/testpie.py,他們會得到一個HTML頁面是這樣的:

<html><head></head><body> 
<img src="data:image/png;base64,1Ab… 
Z2y" /> 
<div>Blah blah this is my text file.</div> 
</body></html> 

您好,我從excuting html文件,Python文件,當我在文本框中輸入一些關鍵字,然後點擊提交,然後它會EXCUTE蟒蛇文件。所以python文件生成兩個文件1).png和2)文本文件。所以我的要求是當我點擊HTML提交時立即在Web瀏覽器中顯示.png和.txt文件。

好的,讓我解釋一下。

我假設你使用傳統的表單提交連接到傳統的CGI服務器。當您單擊Web瀏覽器中的提交按鈕時,會向構建HTML文檔的CGI腳本發送請求。該文檔包含文本文件,並且還包含鏈接到第二個CGI腳本的圖像。您的網絡瀏覽器通過第二個CGI的鏈接自動加載圖像,該CGI生成並返回顯示的PNG文件。因此,您可以在一個瀏覽器頁面中看到圖像和文本。


最後一件事:你可能不希望把文本文件,你的/ var/WWW層次裏面,如果您使用的是data: URL你可能不希望把圖像文件也有。

+0

嗨,我們需要在同一瀏覽器中使用python顯示文本文件內容和png圖像。 –

+0

@VittalCherala:我以爲你已經知道如何打印文本文件。我編輯了答案以顯示。 – abarnert

+0

耐心等待+1。 – maksimov

相關問題