2024-04-25 07:01:20 发布
网友
我有一个脚本,它接受一个文件名作为参数,然后打开它并写一些东西。在
我使用with语句:
with
with open(file_name, 'w') as out_file: ... out_file.write(...)
如果没有提供file_name,如果我想写sys.stdout怎么办?在
file_name
sys.stdout
我是否需要将所有操作包装在函数中并在前面设置条件?在
from contextlib import contextmanager @contextmanager def file_or_stdout(file_name): if file_name is None: yield sys.stdout else: with open(file_name, 'w') as out_file: yield out_file
那你就可以了
您可以编写自己的上下文管理器。如果没有其他人可以的话,我会稍后发布示例代码
如何处理命令行参数?如果使用argparse,则可以使用add_argument的^{}和^{}参数来处理此问题。例如,尝试以下操作:
argparse
add_argument
import sys import argparse def main(argv=None): if argv is None: argv=sys.argv[1:] parser = argparse.ArgumentParser() parser.add_argument('infile', nargs='?', type=argparse.FileType('w'), default=sys.stdin) args = parser.parse_args(argv) print args.infile return 0 if __name__=="__main__": sys.exit(main(sys.argv[1:]))
如果文件名作为参数出现,脚本argparse将自动打开和关闭此文件,args.infile将是该文件的句柄。否则args.infile将只是sys.stdin。在
args.infile
sys.stdin
那你就可以了
^{pr2}$您可以编写自己的上下文管理器。如果没有其他人可以的话,我会稍后发布示例代码
如何处理命令行参数?如果使用} 和^{} 参数来处理此问题。例如,尝试以下操作:
argparse
,则可以使用add_argument
的^{如果文件名作为参数出现,脚本argparse将自动打开和关闭此文件,
args.infile
将是该文件的句柄。否则args.infile
将只是sys.stdin
。在相关问题 更多 >
编程相关推荐