我不知道如何正确地从命令行传递参数。我想传递一个可执行程序和一个源代码文件作为参数。在我尝试打开源代码文件之前,它似乎工作得很好。我做错了什么?
命令行:
$ 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__":
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 _
实际定义将-
作为标准输入或标准输出的别名进行处理,以适用于给定模式,以及更好的错误处理。