atexit没有写入文件

时间:2015-07-10 14:56:41

标签: python atexit

我正在测试atexit模块是否通过尝试打印到文件而正常运行。 atexit的实际目的是关闭开放端口,但这是为了测试atexit是否正在起作用。但是,atexit不打印到文件,任何想法为什么不?任何帮助表示赞赏。

import atexit
import scala5
from scala5 import sharedvars
scalavars = sharedvars()
import serial
myPort=serial.Serial()

myPort.baudrate = 9600
myPort.port = "COM4"
myPort.parity=serial.PARITY_NONE
myPort.stopbits=serial.STOPBITS_ONE
myPort.bytesize=serial.EIGHTBITS
myPort.timeout=2
myPort.writeTimeout=2

try:
    myPort.close()
except:
    print("didn't need to close")

def port_exit():
    fo = open("test.txt", "w")
    fo.write("This works!")
    fo.close()

myPort.open()

while True:
    x = myPort.readline()
    if x == "1\r\n":
        scalavars.door = x
    scala5.ScalaPlayer.Sleep(10)

atexit.register(port_exit)
port_exit()

1 个答案:

答案 0 :(得分:0)

你正在注册你的while循环之后的函数,我假设你通过杀死脚本退出(意味着函数this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));没有注册)。如果您在while之前注册该函数,则它应该在脚本退出时触发并写入该文件。

port_exit