gpt4 book ai didi

python - 使用Python CGI显示
中的文件内容

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:33 25 4
gpt4 key购买 nike

我试图在 <div> 中显示/etc/postfix/transport.in 的内容通过 python 和 cgi。当我从命令行运行脚本时,它按我的预期工作,但是,当从网页调用时,它不会显示文件内容。这是我的 CGI 中的内容:

#!/usr/bin/env python

import cgi, os.path

# fileName = "/etc/postfix/transport.in"

form = cgi.FieldStorage()
fileName = form['file'].value

def safePlainText(s):
newString = s.replace('&', '&amp;').replace('<', '&lt;')
return newString

def fileLinesToHTMLLines(fileName):
safeLines = list()
if os.path.exists(fileName): # test if the file exists yet
lines = fileToStr(fileName).splitlines()
for line in lines:
safeLines.append(safePlainText(line))
return safeLines

def fileToStr(fileName):
fin = open(fileName);
contents = fin.read();
fin.close()
return contents

lines = fileLinesToHTMLLines(fileName)

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Data File %s</title>" % fileName
print "</head>"
print "<body>"
print "<ul>"
for line in lines:
print "<li> %s </li>" % str(cgi.escape(line))
print "</ul>"
print "</body>"
print "</html>"

除了我试图显示的文件行之外,所有内容(包括标题的 HTML 标签)均按预期进行。 Firebug 将服务器的响应显示为:

<html>
<head>
<title>Data File transport.in</title>
</head>
<body>
<ul>
</ul>
</body>
</html>

但是,如果我从命令行运行脚本,我会得到:

# sudo -u apache ./test3.py
Content-type:text/html


<html>
<head>
<title>Data File /etc/postfix/transport.in</title>
</head>
<body>
<ul>
<li> host.domain.com relay:[mailhub.domain.corpnet1] </li>
<li> * relay:[host.mailrelay.com] </li>
</ul>
</body>
</html>

我确信这很简单,但我一生都无法弄清楚......
我在 RHEL7 上运行 Python 2.7.5/Apache 2.4.6。

最佳答案

“数据文件”不同。

数据文件transport.in

数据文件/etc/postfix/transport.in

请粘贴从网页调用时的网址。

关于python - 使用Python CGI显示<div>中的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com