SimpleHTTPServer"永远服务器"阻止脚本的其余部分

时间:2017-06-04 02:14:00

标签: python simplehttpserver

以下是我的脚本。它创建一个目录,检测arduino设备,不断将其输出写入文本文件,并在本地服务器中提供该文件。从我所知道的(并已阅读),这一行:

httpd.serve_forever()

在处理后没有任何结果。文本文件永远不会被写入。如果我将httpd.serve_forever()行进一步向下移动,它将处理所有内容,因此这似乎重申了这一理论。我该怎么做我需要的东西?我明白哪里出错了?

import serial
import serial.tools.list_ports
import os
import SimpleHTTPServer
import SocketServer
import sys,os

fileDir = os.path.dirname(os.path.realpath('__file__'))

try:
    os.makedirs(os.path.join(fileDir, 'log'))
except OSError:
    if not os.path.isdir(os.path.join(fileDir, 'log')):
        raise

directory = os.path.join(fileDir, 'log')
log = os.path.join(directory, 'log.txt')
os.chdir(directory)

PORT = 8080
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
httpd.serve_forever()

def get_ports():

    ports = serial.tools.list_ports.comports()

    return ports

def findArduino(portsFound):

    commPort = 'None'
    numConnection = len(portsFound)

    for i in range(0,numConnection):
        port = foundPorts[i]
        strPort = str(port)

        if 'Arduino' in strPort:
            splitPort = strPort.split(' ')
            commPort = (splitPort[0])

    return commPort

foundPorts = get_ports()        
connectPort = findArduino(foundPorts)

if connectPort != 'None':
    ser = serial.Serial(connectPort,baudrate = 9600, timeout=1)
    while 1:
        if ser.inWaiting():
            with open(log, "w") as txtfile:
                x=ser.readline()
                txtfile.write(x)
                txtfile.flush()
                if x=="\n":
                    txtfile.seek(0)
                    txtfile.truncate
                    txtfile.flush()
    ser.close()

else:
   print('Connection Issue!')

print('DONE')

0 个答案:

没有答案