如何立即退出python脚本

时间:2016-03-14 09:44:45

标签: python powershell exit

我从MS powershell调用一个带有两个参数值的~500行python脚本。我想退出python脚本sys.argv[1] > sys.argv[2]if条件位于脚本的开头。

但是,(time.time() - start_time)总是显示与退出时相似的时间,就像脚本作为一个整体执行一样。

我尝试了os._exit(0)os.exit()quit()sys.exit(),所有结果都相似。

是否有办法立即终止并返回批处理,类似于批处理中的quit即时生效?

这是脚本的开头:

#!/usr/bin/env python

# Start clock
import time
import datetime as dt
start_time = time.time()

# Import modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import time
import sys
import glob
import csv
import glob
import fileinput
import os
import io
import shutil
import decimal
import matplotlib.ticker as plticker

from business_calendar import Calendar, MO, TU, WE, TH, FR
from datetime import datetime
from pandas.io.data import DataReader
from backtest import Strategy, Portfolio
from sys import exit
from decimal import Decimal
from colorama import init
from shutil import copyfile
from datetime import date, timedelta as td

init()

# Definition of argument values
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
num123 = datetime.strptime(sys.argv[3], "%Y-%m-%d")
num321 = datetime.strptime(sys.argv[4], "%Y-%m-%d")
stock = sys.argv[5]
total = 'total'

# Date conversions
num987 = num123.strftime('%Y%m%d')
num888 = int(num987)
num789 = num321.strftime('%Y%m%d')
num999 = int(num789)

if num1 > num2:

3 个答案:

答案 0 :(得分:0)

你试过吗

raise SystemExit

还有另一个“os”函数 - os._exit - 它应该立即终止,因为它终止于C级

答案 1 :(得分:0)

退出前请考虑代码。您正在导入19个模块,这些模块可能导入更多,有些模块可能会在导入时执行其他代码。无论您是否退出,都将导入并执行这些操作。

通过在导入之前放置测试并退出(作为测试),您可以轻松地测试这是否是一个重大的开销。

您是否需要所有这些模块具有全球范围?

是的,我知道打破了PEP008: " 导入始终位于文件的顶部"

但是:" ... 有时风格指南建议不适用...... "

我建议你在导入之前评论你有代码的原因。

答案 2 :(得分:-1)

我一直用:

#!/usr/bin/env python

# Start clock
import time
import datetime as dt

# Import modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import time
import sys
import glob
import csv
import glob
import fileinput
import os
import io
import shutil
import decimal
import matplotlib.ticker as plticker

from business_calendar import Calendar, MO, TU, WE, TH, FR
from datetime import datetime
from pandas.io.data import DataReader
from backtest import Strategy, Portfolio
from sys import exit
from decimal import Decimal
from colorama import init
from shutil import copyfile
from datetime import date, timedelta as td

if __name__ == '__main__':

    start_time = time.time()
    init()

    # Definition of argument values
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])

    if num1 > num2:
        sys.exit(1)

    num123 = datetime.strptime(sys.argv[3], "%Y-%m-%d")
    num321 = datetime.strptime(sys.argv[4], "%Y-%m-%d")
    stock = sys.argv[5]
    total = 'total'

    # Date conversions
    num987 = num123.strftime('%Y%m%d')
    num888 = int(num987)
    num789 = num321.strftime('%Y%m%d')
    num999 = int(num789)

if __name__ == '__main__':对我来说感觉更加诅咒!