2016-04-06 3 views
-4

sys.argvを使用してコマンドラインから引数を調べる必要があります。これは私の場合はファイル名になります。私のコードは以下の通りです。私はargparseをインポートすることは許されておらず、sysだけを使用することが許されています。私はここで何か間違っていることを知っています。助けをお待ちしています。sys.argvをPythonでテキストファイルを開く関数に追加するには

def get_inputfile_object(): 
    ''' 
    Check the command line for an argument. If one was there, use it as the 
    filename. Otherwise, use DEFAULT_INPUT_FILENAME. Open the file. 

    If file is successfully opened: 
     print MSG_OPENING_FILE 
     Return: a file object for that file 

    If the file cannot be opened: 
     print MSG_ERROR_OPENNING_FILE 
     Return: True 
    ''' 
    if sys.argv > 1: 
     pass 
    else: 
     input_filename = DEFAULT_INPUT_FILENAME 

    input_filename = DEFAULT_INPUT_FILENAME 
    if os.path.isfile(input_filename) and os.access(input_filename,os.R_OK): 
     #Prints the opening file message, and the name of the file 
     print (MSG_OPENING_FILE,input_filename) 
     return open(input_filename,'r') 
    else: 
     print (MSG_ERROR_OPENING_FILE) 
     return True 
+1

'lenの場合(sys.argvの)> 1:' – Evert

+1

もargparseチェックアウトします。https://ドキュメントを.python.org/3/library/argparse.html – bcorso

+0

この猿ビジネスの大部分を担当する[fileinput](https://docs.python.org/2/library/fileinput.html)あなたのために。 – dawg

答えて

0

sys.argvは引数のリストです。

あなたは、リストの長さをチェックする必要があります。

if len(sys.argv) > 1: 
+2

Python 3では、このような明白なエラーは例外を発生させますが、残念ながら、Python 2ではフォールバックの比較が行われ、フォールバック比較ではすべての数値が非数値以外の数値)。それはばかだ。 – ShadowRanger

+0

@ ShadowRangerなぜそれが3で修正されたのです! = D(真剣に、他の言語やランタイムの多くはこのようなものを決して決してしません) – jpmc26

0

あなたはargparseをチェックアウトする必要があります。

argparseモジュールも自動的にヘルプと使い方 メッセージと、ユーザーがプログラムに不正な 引数を与える問題のエラーを生成します。

がそれをテストしていませんが、あなたはこれに似た何かを試すことができます。

import argparse 

# setup the parser 
parser = argparse.ArgumentParser(description='Describe script') 

# add positional argument 
parser.add_argument('filename', type=str, help='filename description') 

# parse the args 
args = parser.parse_args() 
print(args.filename) 
+0

argparseはそこにある第三者のオプションのいくつかの* far *に劣ります。 doctoptとclickは良いオプションです。 – jpmc26

関連する問題