为什么python 2.4一直忽略我的退出函数



我编写了一个仅在 2.6 或 2.7 版本上运行的脚本。我已经进行了安全检查,以查看是否安装了另一个版本,并检查是否有任何兼容的版本可用。这是我的代码片段;

# !/usr/bin/python
import sys, os, re
from sys import exit
if sys.version[0:3] in ['2.6', '2.7']:
    import subprocess, datetime, os.path, json, urllib2, socket
def python_version():
    version = sys.version[0:3]
    while version not in ['2.6', '2.7']:
        print 'nnYou're using an incompatible version of Python (%s)' % version
        python_installed_version = []
        for files in os.listdir("/usr/bin/"):  # check to see version of python already on the box
            python_version = re.search("(python2(.+?)[6-7]$)", files)
            if python_version:
                python_installed_version.append(python_version.group())
        if python_installed_version:
            print 'Fortunately there are compatible version(s) installed. Try the following command(s): nn',
            for version in python_installed_version:
                print 'curl http://script.py  | %sn' % version
        sys.exit()
python_version()
with p.stdout:
print 'hello'

当我在python 2.4中运行上述内容时,出现此错误;

  File "<stdin>", line 46
      with p.stdout:
     ^
SyntaxError: invalid syntax

我不明白为什么脚本在检测到您正在使用带有 python 2.4 的 sys.exit() 后立即退出,而是继续读取脚本并在读取with p.stout:的位置给出上面的错误。

我已经删除了with p.stdout:行,它可以正常工作,它不会读取print 'hello'.我不知道为什么with p.stdout:导致脚本中断。这在 2.6 和 2.7 上工作得很好。

关于为什么python 2.4仍然会读取with p.stdout:行的任何想法?谢谢。

Python

2.4 还没有with语法支持,因此脚本在解析阶段失败,而不是在运行时失败。您可以通过使用一些包装器来解决此问题,例如:

if version_check_ok():
    import actual_app
    actual_app.run()
else:
    ...

这样,在知道这样做是安全的之前,不会导入/解析具有新语法的新文件。但是,您无法将导入移动到版本检查上方。

相关内容

  • 没有找到相关文章

最新更新