提问者:小点点

使用Python输出到CGI?错误总是告诉我缺少括号?


尝试使用python生成CGI屏幕。然而,当我从命令行运行它时,我总是得到一个错误,指出它在“print”content-type:text/html\r\n\r\n“行上缺少括号。非常感谢任何帮助。多谢了。

#!/usr/bin/python3
import urllib.request
import json
import os

link = "https://api.nasa.gov/planetary/apod?api_key....."
resp = urllib.request.urlopen(link)
data = resp.read()
print(str(data, 'utf-8'))
returnJson = json.loads(data)
img_url = returnJson['url']
title = returnJson['title']
current_date = returnJson['date']

(filename, headers) = urllib.request.urlretrieve(img_url)
img_file_name = img_url.split('/')[-1]
os.rename(filename, img_file_name)
html = """
<center>
       <h1>Astronomy Picture of the Day</h1>
       <img src="%s">
       <p><b>%s</b></p>
</center>
""" % (img_file_name, title)
html_file_name = 'nasa_apod_%s.html' %current_date

print "Content-type:text/html\r\n\r\n" **Where it says parenthesis**
print '<html>'
print '<head>'
print '<title>Astronomy Picture of the Day</title>'
print '</head>'
print '<body>'
print '<h1>Astronomy Picture of the Day</h1>'
print '</body>'
print '</html>'

共1个答案

匿名用户

这是因为您使用的是Python3。在Python3中,print是一个函数,而不是一个语句。所以这意味着您需要在打印的任何内容周围添加括号。

# this will fail in Python 3
print "Content-type:text/html\r\n\r\n"

# but this will work
print("Content-type:text/html\r\n\r\n")

正如您所做,前面使用print(str(data,'UTF-8'))