python - 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__":
解决方案
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 _
真正的定义处理-
为适合给定模式的标准输入或标准输出的别名,以及更好的错误处理。
推荐阅读
- react-native - SafeAreaView的不同实现有什么区别?
- neo4j - 是否可以微调 RETURN 语句以跳过特定类型节点之间的边?
- regex - vs-code:使用正则表达式将文本附加到多个打开的文件?
- networking - 如何指定只覆盖一个地址的 CIDR 块?
- android - 在 RTL 布局(Android 约束布局)中忽略了指导线
- sql - 带查询的 Oracle 报表参数
- react-native - 无法解析“@babel/runtime/regenerator”
- javascript - 我想知道如何在我自己的网站上显示我的 Facebook 提要?
- node.js - 如何为 axios 设置自定义 DNS 解析器
- python - 如何比较两个excel文件并用Python写第三?