首页 > 解决方案 > python 参数解析器。可执行文件和源代码文件作为参数

问题描述

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

命令行:

$ my_script.py  my_executable  source_code.fe

代码:

import sys, argparse 
def main():

    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 = vars(parser.parse_args())
    args = parser.parse_args()

    infile = open(args.src_file)
    #child = subprocess.run( [exe], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=infile)

   if __name__ == "__main__":

标签: pythonpython-3.x

解决方案


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自己定义为

def FileType(*args, **kwargs):
    def _(fname):
        return open(fname, *args, **kwargs)
    return _

真正的定义处理-为适合给定模式的标准输入或标准输出的别名,以及更好的错误处理。


推荐阅读