2016-03-26 9 views
-1

私はPythonにはかなり新しく、少しガイダンスが必要です。コンソールエラーからの変数の解析

run AuctionStrategy_2.0.py -in10 -out5 -rolls15 -step3 -t.001 -s5 -m100 -v50 -e'01/01/2016' 

誰かがこれをしてください修正する方法を私に聞かせてもらえ:私は、コンソールコマンドを実行すると

AuctionStrategy_2.0.py: error: argument -s/--sectorStocks: invalid int value: 'tep3'

:私は、コンソールから、いくつかの変数を渡すと、メッセージを取得し、エラーしようとしていますか?今の私のコードは、コンソールから変数を渡して渡す以外は何もしません。

import argparse 
import os 
import fnmatch 
import pandas as pd 
from pandas.tseries.offsets import BDay 
import lzma 
import numpy as np 
import math 
import datetime 

def main(): 
    print('Processing args....') 

    insampleLength,outsampleLength,rolls,step,threshold,minStocksPerSector,minMarketCap,minVolume,endDate = get_args() 
    print(insampleLength,outsampleLength,rolls,step,threshold,minStocksPerSector,minMarketCap,minVolume,endDate) 
    rawDataPath = 'C:/Users/simon/Documents/data/close_unadjusted/close_unadjusted/' 

def get_args(): 

    '''This function parses and return arguments passed in''' 

    insampleLength = 0 
    outsampleLength = 0 
    rolls = 0 
    step = 0 
    endDate ='' 
    minStocksPerSector = 0 
    threshold = 0 


    parser = argparse.ArgumentParser(
     description='Args to run VWAP Auction simulation') 

    ''' Command line arguments''' 

    parser.add_argument('-in', '--inSampleDataLength', type=int, help='Number of historic epochs insample', required=True) 
    parser.add_argument('-out', '--outSampleDataLength', type=int, help='Number of historic epochs outsample', required=True) 
    parser.add_argument('-rolls', '--numberRolls', type=int, help='Number of rolls', required=True) 
    parser.add_argument('-step', '--rollStep', type=int, help='Number of historic epochs', required=True) 

    parser.add_argument('-t','--threshold', type=float, help='starting value', required=True)  
    parser.add_argument('-s','--sectorStocks', type=int, help='minimum number', required=True) 
    parser.add_argument('-m','--marketCapCutOff', type=int,help='market capitalisation', required=True) 
    parser.add_argument('-v','--volumeCutOff', type=int, help='daily volume', required = True) 
    parser.add_argument('-e', '--endDate', type=str,help='last day of testing',required = True) 


    args = parser.parse_args() 

    ''' Assign args to variables''' 

    insampleLength = args.inSampleDataLength 
    outsampleLength = args.outSampleDataLength 
    rolls = args.numberRolls 
    step = args.rollStep 
    threshold = args.threshold 
    minStocksPerSector = args.sectorStocks 
    minMarketCap = args.marketCapCutOff 
    minVolume = args.volumeCutOff 
    endDate = datetime.datetime.strptime(args.endDate, "%d-%b-%Y") 


    return insampleLength,outsampleLength,rolls,step,threshold,minStocksPerSector,minMarketCap,minVolume,endDate 


if __name__ == "__main__": 
    print ("AuctionStategy_1.0...25/03/16") 

    try: 
     main()    
    except KeyboardInterrupt: 
     print ("Ctrl+C pressed. Stopping...") 

答えて

1

単一のダッシュは、常に1文字の引数を識別します。しかし、あなたは-stepを定義しようとしています。これは-sと解釈され、後で実際の-s引数で再定義されます。

「ステップ」に別の識別子を指定するか、常にダブルダッシュバージョン--rollStepを使用する必要があります。

0

引数-sには、文字列を指定した整数が必要です。これにより、エラーが発生します。

ところで、私はそれが引数の名前の間にスペースを追加する方が良いと思うし、それが値、例えばです:

run AuctionStrategy_2.0.py -in 10 -out 5 -rolls 15 -step 3 -t .001 -s 5 -m 100 -v 50 -e '01/01/2016' 

希望これは

を支援