python语法分析器。可执行文件和源代码文件作为参数

python语法分析器。可执行文件和源代码文件作为参数,python,python-3.x,Python,Python 3.x,我不知道如何正确地从命令行传递参数。我想传递一个可执行程序和一个源代码文件作为参数。在我尝试打开源代码文件之前,它似乎工作得很好。我做错了什么 命令行: $ my_script.py my_executable source_code.fe 代码: FileType基本上会在open周围生成一个包装器。parse_args返回的值中的属性已经是类似文件的对象 parser = argparse.ArgumentParser(description='Description of progr

我不知道如何正确地从命令行传递参数。我想传递一个可执行程序和一个源代码文件作为参数。在我尝试打开源代码文件之前,它似乎工作得很好。我做错了什么

命令行:

$ my_script.py  my_executable  source_code.fe
代码:


FileType
基本上会在
open
周围生成一个包装器。
parse_args
返回的值中的属性已经是类似文件的对象

parser = argparse.ArgumentParser(description='Description of program')

parser.add_argument('exe', type=argparse.FileType('r'))
parser.add_argument('src_file', type=argparse.FileType('r'))

args = parser.parse_args()

infile = args.src_file

处理
-
作为标准输入或标准输出的别名,适用于给定模式,以及更好的错误处理。

它告诉您什么是错误的?有错误吗?给一个;您发布的内容在语法上似乎无效。如果您使用的是
FileType
,则
args.exe
args.src_file
都已经是打开的文件句柄,而不仅仅是文件名。我想
argparse.FileType
会为您打开文件;自己调用
open
可能不正确。
parser = argparse.ArgumentParser(description='Description of program')

parser.add_argument('exe', type=argparse.FileType('r'))
parser.add_argument('src_file', type=argparse.FileType('r'))

args = parser.parse_args()

infile = args.src_file
def FileType(*args, **kwargs):
    def _(fname):
        return open(fname, *args, **kwargs)
    return _