chi*_*der 3 python command-line
这更多是关于编码风格的问题,但是我有一个脚本来处理特定文件(或文件集)。允许用户提供这些文件作为命令行参数会很好。当然,用户可能会忘记提供这些文件,或者文件名无效,因此我必须在此处引入try / except。
问题是,将来有人可能要导入我的模块。但是,我不知道该程序可能需要哪些命令行参数。另外,如果在我的模块访问命令行参数时抛出错误,则似乎可以通过导入我的模块的脚本更好地处理它。但是,如果引发错误,我的脚本仍然需要能够独立运行。
是否有解决此问题的明智方法,还是仅放弃命令行参数的最佳解决方案?
小智 5
通常的程序:
import sys
def main(*files):
# your program's logic goes here
if __name__ == "__main__": #i.e. run directly
try:
main(*sys.argv[1:])
except IOError:
handle_error()
Run Code Online (Sandbox Code Playgroud)
如果导入,__name__将为!= "__main__",因此实际上什么也没有发生,导入者可以调用main(file1, file2)。但是,如果此脚本是主脚本(即未导入),它将仅在中执行现在的操作main。