服务器 http 显示来自 .txt 的变量 python
Server http displays a variable from .txt with python
我想向显示 .txt 文件中的数据的网络服务器发出 HTTP 请求 (PYTHON)。
我有这个 data1.txt
文件,其中包含:
bonjour
这是我的代码 webserver.py
:
#!/usr/bin/python
from http.server import BaseHTTPRequestHandler,HTTPServer
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
###############################
File = open('data1.txt',"r")
if(File == None):
print("File Not Found..")
else:
while(True):
# extracting data from records
record = File.readline()
if (record == ''): break
File.close()
###############################
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(
b"Hello from <b>Raspberry Pi</b> running <b><i>Python</i></b>")
self.wfile.write(
b"<a href='http://helloraspberrypi.blogspot.com'>Hello Raspberry Pi</>")
self.wfile.write(
b"$record" )
return
try:
server = HTTPServer(('localhost', 8080), myHandler)
print ('HTTPServer started')
server.serve_forever()
except KeyboardInterrupt:
print ('server.socket.close()')
server.socket.close()
我想显示 bonjour
感谢以下行
self.wfile.write(b"$record" )
来自对应于 bonjour
的变量 record
:record = File.readline() = bonjour
我的问题是我不知道如何调用变量,我尝试使用 $record
但它不起作用。
首先请注意 documentation 建议不要使用此方法:
Warning: http.server
is not recommended for production. It only implements basic security checks.
像 Flask 这样的东西同样简单,而且更适合生产使用。无论如何,继续使用 http.server
:
- 您实际上并不是在提供文本内容;您正在提供 HTML 内容,因此请将您的
.txt
文件重命名为 .html
- 考虑使用不同的处理程序,即
SimpleHTTPRequestHandler
,直接从文件系统提供内容
- 将您的
Hello
(等)移动到 .html
您还误解了 Python 在找不到文件时文件操作的工作方式。这是行不通的:
if(File == None):
print("File Not Found..")
因为失败时,open
不会 return None
;它会引发异常。
对于您的 record
参考,修复应该只是
self.wfile.write(record.encode())
您还需要删除您的读取循环;目前这个:
if (record == ''): break
保证您显示的记录将是一个空字符串。相反,只做一个 file.read()
并展示作品,而不是逐行阅读。
解决方法是拆分.txt
文件(变量data
),然后对其进行编码:
#!/usr/bin/python
from http.server import BaseHTTPRequestHandler,HTTPServer
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
###############################
File = open('data1.txt',"r")
if(File == None):
print("File Not Found..")
else:
while(True):
# extracting data from records
record = File.readline()
print(record.encode())
if (record == ''): break
data = record.split()
print("data:",data[0].encode())
File.close()
###############################
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(
"<h1>".encode() + data[0].encode() + "</h1>".encode())
return
try:
server = HTTPServer(('localhost', 8080), myHandler)
print ('HTTPServer started')
server.serve_forever()
except KeyboardInterrupt:
print ('server.socket.close()')
server.socket.close()
感谢您的帮助!
我想向显示 .txt 文件中的数据的网络服务器发出 HTTP 请求 (PYTHON)。
我有这个 data1.txt
文件,其中包含:
bonjour
这是我的代码 webserver.py
:
#!/usr/bin/python
from http.server import BaseHTTPRequestHandler,HTTPServer
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
###############################
File = open('data1.txt',"r")
if(File == None):
print("File Not Found..")
else:
while(True):
# extracting data from records
record = File.readline()
if (record == ''): break
File.close()
###############################
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(
b"Hello from <b>Raspberry Pi</b> running <b><i>Python</i></b>")
self.wfile.write(
b"<a href='http://helloraspberrypi.blogspot.com'>Hello Raspberry Pi</>")
self.wfile.write(
b"$record" )
return
try:
server = HTTPServer(('localhost', 8080), myHandler)
print ('HTTPServer started')
server.serve_forever()
except KeyboardInterrupt:
print ('server.socket.close()')
server.socket.close()
我想显示 bonjour
感谢以下行
self.wfile.write(b"$record" )
来自对应于 bonjour
的变量 record
:record = File.readline() = bonjour
我的问题是我不知道如何调用变量,我尝试使用 $record
但它不起作用。
首先请注意 documentation 建议不要使用此方法:
Warning:
http.server
is not recommended for production. It only implements basic security checks.
像 Flask 这样的东西同样简单,而且更适合生产使用。无论如何,继续使用 http.server
:
- 您实际上并不是在提供文本内容;您正在提供 HTML 内容,因此请将您的
.txt
文件重命名为.html
- 考虑使用不同的处理程序,即
SimpleHTTPRequestHandler
,直接从文件系统提供内容 - 将您的
Hello
(等)移动到.html
您还误解了 Python 在找不到文件时文件操作的工作方式。这是行不通的:
if(File == None):
print("File Not Found..")
因为失败时,open
不会 return None
;它会引发异常。
对于您的 record
参考,修复应该只是
self.wfile.write(record.encode())
您还需要删除您的读取循环;目前这个:
if (record == ''): break
保证您显示的记录将是一个空字符串。相反,只做一个 file.read()
并展示作品,而不是逐行阅读。
解决方法是拆分.txt
文件(变量data
),然后对其进行编码:
#!/usr/bin/python
from http.server import BaseHTTPRequestHandler,HTTPServer
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
###############################
File = open('data1.txt',"r")
if(File == None):
print("File Not Found..")
else:
while(True):
# extracting data from records
record = File.readline()
print(record.encode())
if (record == ''): break
data = record.split()
print("data:",data[0].encode())
File.close()
###############################
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(
"<h1>".encode() + data[0].encode() + "</h1>".encode())
return
try:
server = HTTPServer(('localhost', 8080), myHandler)
print ('HTTPServer started')
server.serve_forever()
except KeyboardInterrupt:
print ('server.socket.close()')
server.socket.close()
感谢您的帮助!