首页 > 解决方案 > 为什么我的代码在 python2 中运行而不在 python3 中运行

问题描述

import os
import time

CONSOLE = "/dev/tty0"
logfd = None
def log_me(logstr):
    global logfd
    global CONSOLE

    print(time.strftime("%c")+": "+logstr)
    if not logfd:
        if not os.path.exists(CONSOLE):
            return
        logfd = open(CONSOLE, "a")
        if not logfd:
            return

    logfd.write(logstr+"\n")
    logfd.flush()

    return

测试.py

from consolelog import log_me

print ("Hello World!")
log_me("This is a Hello World script")
log_me("Logging 2nd time to see how it works.")
log_me("loging 3rd time")

与 python2 一起使用时相同的代码正在工作,但在与 python3 一起运行时抛出错误 29 非法搜索

[root@869ebe33-77e8-41b4-918b-eafda978fd98 ~]# python test.py
Hello World!
2021 年 4 月 14 日星期三 07:37:03:这是一个 Hello World 脚本
2021 年 4 月 14 日星期三 07:37:03:第二次记录以查看它是如何工作的。
2021 年 4 月 14 日星期三 07:37:03:第三次登录

用python3输出

[root@869ebe33-77e8-41b4-918b-eafda978fd98 ~]# python3 test.py
Hello World!
2021 年 4 月 14 日星期三 07:37:10:这是一个 Hello World 脚本
Traceback(最近一次调用最后一次):
文件“test.py”,第 4 行,在
log_me(“这是一个 Hello World 脚本”)
文件“/root /consolelog.py",第 14 行,在 log_me
logfd = open(CONSOLE, "a")
OSError: [Errno 29] Illegal seek

标签: python-3.6tty

解决方案


使用 python3.x append 不适用于 open(/dev/tty0) 所以我们必须使用 write 而不是 append。


推荐阅读