【发布时间】:2021-07-15 17:32:02
【问题描述】:
我认为this post 会回答这个问题,但该解决方案似乎对我不起作用。 我的脚本与 Python 2 不兼容,如果它与 Python 2 一起运行,我需要它正常退出。这不是因为无论代码放在哪里,python 在运行任何代码之前都会评估所有函数。
这是我所拥有的:
import os, sys, re, argparse
import pandas as pd
if sys.version_info[0] < 3:
print("Please run this script using python 3 or higher")
sys.exit(1)
def get_samples(filename):
try:
summary_table = pd.read_csv(filename, sep='\t')
except Exception:
print(f"Could not import {filename} using Pandas")
sys.exit(1)
return(summary_table['sample'])
#more functions
def main():
#some code here
if '__name__' == __main__:
main()
当我在 Python 2.7 中测试运行脚本时,脚本在打印行(第一个不兼容位置)失败:
/usr/bin/python elims_push.py -d Run_2021.04.16-10.36.20_M947-21-010
File "myscript.py", line 43
print(f"Could not import {filename} using Pandas")
顺便说一句,pandas 导入语句的 except 语句也不起作用。如果导入中断,我想要一种干净的退出方式。这显然不是本文的重点,但如果您碰巧有建议,我欢迎您提出建议。
【问题讨论】:
-
你有一个难题,在python版本
-
对。我不需要向后兼容 python2。我需要:1)如果用户在 python2 而不是 python3 中运行它(即在我们的服务器上,他们输入
python myscript.py而不是python3 myscript.py),则正常退出,或者 2)如果用户尝试运行,则强制切换到 python3它在python2中。有没有一种可能?
标签: python-3.x function version python-2.x