从python命令行参数中过滤整数

pte*_*ter 1 python

所以我写了一个程序,我想传递一个文件名和一个整数或只是一个整数.什么是确定哪个参数是整数的最佳方法?这就是我所拥有的:

import sys

if len(sys.argv) > 1):
    for e in sys.argv:
        try:
            bio = map(e, int)
        except:
            pass
Run Code Online (Sandbox Code Playgroud)

提前致谢

Val*_*ior 8

您可以使用字符串isdigit()方法检查参数是否为整数:

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
Run Code Online (Sandbox Code Playgroud)

但是,我应该鼓励你给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
Run Code Online (Sandbox Code Playgroud)

  • 好.我刚刚添加了一个argparse示例,以防你改变主意.;) (2认同)