繁体   English   中英

通过 cronjob 在 unix 服务器上运行具有前导零的 Python2.7 脚本时处理兼容性/错误

[英]Dealing with compatibility / errors in running Python2.7 script that has leading zeros on unix server via cronjob

我试图让一个旧的 Python 脚本运行,它与许多用 Python 2.7 编写的脚本交互......升级它绝对不会发生,所以我需要解决一个错误。

主脚本(listener.py)调用的一个模块(reply.py)中有一些时间参数,前导零,我认为这是导致此错误的原因:

[myuser@server ~]$ python2.7 /home/myuser/public_html/app_project/listener.py
Traceback (most recent call last):
  File "/home/myuser/public_html/app_project/listener.py", line 10, in <module>
    from modules import reply
  File "/home/myuser/public_html/app_project/modules/reply.py", line 144
    if now_time >= time(09,00) and now_time <= time(17,00):
                         ^
SyntaxError: invalid token
[myuser@server ~]$ python2.7 /home/myuser/public_html/app_project/listener.py
Traceback (most recent call last):
  File "/home/myuser/public_html/app_project/listener.py", line 10, in <module>
    from modules import reply
  File "/home/myuser/public_html/app_project/modules/reply.py", line 144
    if now_time >= time(09,00) and now_time <= time(17,00):

但我感到困惑的是,主脚本被设置为在 Python2.7 中执行……前导零应该没问题?

工作流程是...

cronjob 调用 shell 脚本来检查 python 进程(listener.py)是否正在运行:

#!/bin/bash
pid_file='/home/myuser/public_html/app_project/listener.pid'
if [ ! -s "$pid_file" ] || ! kill -0 $(cat $pid_file) > /dev/null 2>&1; then
  echo $$ > "$pid_file"
  exec /usr/bin/python2.7 /home/myuser/public_html/app_project/listener.py
fi

所以主要的可执行文件(listener.py)在Python2.7中运行......所以我不明白模块(reply.py)中前导零的问题是什么......?

是因为模块(reply.py)以某种方式通过 Python3 执行吗? 这就是它不喜欢前导零的原因吗? 还是关于其他东西的“无效令牌”错误?

任何解决此问题的建议将不胜感激。

请注意,我不想大量更改代码(这不是应用程序中唯一需要更改的代码,即去掉前导零并将其升级到 Python3 需要很长时间才能正确完成),我只是想确保它在 2.7 中都能正常执行。 没有其他理由将应用程序升级到 Python3。

在 Python 3 之前,整数标记的前导零表示该值是八进制的 - 例如,07。前导零单独指示后面是八进制

在 Python 3 中,前导零可用于八进制值,但您需要一个额外的限定符 - 例如 0o7

09 的标记在 Python 2 或 3 中均无效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM