だから私はプログラムを書いて、ファイル名と整数、または整数だけを渡したいと思っています。どの引数が整数であるかを判断する最良の方法は何ですか? これは私が持っているものです:
import sys
if len(sys.argv) > 1):
for e in sys.argv:
try:
bio = map(e, int)
except:
pass
前もって感謝します
だから私はプログラムを書いて、ファイル名と整数、または整数だけを渡したいと思っています。どの引数が整数であるかを判断する最良の方法は何ですか? これは私が持っているものです:
import sys
if len(sys.argv) > 1):
for e in sys.argv:
try:
bio = map(e, int)
except:
pass
前もって感謝します
isdigit()
stringメソッドを使用して、引数が整数であるかどうかを確認できます。
import sys
if len(sys.argv) > 1:
for e in sys.argv:
if e.isdigit():
# all characters in e are digits and there is at least one character in e
else:
# it is possibly your filename argument
ただし、argparse ライブラリにチャンスを与えることをお勧めします: http://docs.python.org/dev/library/argparse.html
import argparse
parser = argparse.ArgumentParser(description = 'A simple description')
parser.add_argument('-f', action = 'store', dest = 'filename', required = False)
parser.add_argument('-n', action = 'store', dest = 'n', required = True, type=int)
arguments = parser.parse_args()
print arguments.n
print arguments.filename
def isint(val):
try:
int(val)
return True
except:
return False
int_args = filter(isint,sys.argv)
not_int_args = set(sys.argv) - set(int_args)
if len(sys.argv) == 1: #user passed in only one argument. It must be an integer.
bio = int(sys.argv[0])
elif len(sys.argv) == 2: #user passed in two arguments: filename and integer.
filename = sys.argv[0]
bio = int(sys.argv[1])
else: #user didn't pass in the right number of arguments
raise Exception("Expected one or two arguments")