导入的Python模块中的命令行参数
这更多的是一个编码风格的问题,但我有一个处理特定文件(或一组文件)的脚本。允许用户将这些文件作为命令行参数提供会更好。当然,用户可能忘记提供这些信息,或者文件名无效,因此我必须在这里介绍try/except 问题是,将来可能有人想导入我的模块。但是,我不知道程序可能需要什么命令行参数。此外,如果在我的模块访问命令行参数时引发错误,那么似乎由导入我的模块的脚本更好地处理它。但是,如果抛出错误,我的脚本仍然需要能够作为独立脚本处理导入的Python模块中的命令行参数,python,command-line,Python,Command Line,这更多的是一个编码风格的问题,但我有一个处理特定文件(或一组文件)的脚本。允许用户将这些文件作为命令行参数提供会更好。当然,用户可能忘记提供这些信息,或者文件名无效,因此我必须在这里介绍try/except 问题是,将来可能有人想导入我的模块。但是,我不知道程序可能需要什么命令行参数。此外,如果在我的模块访问命令行参数时引发错误,那么似乎由导入我的模块的脚本更好地处理它。但是,如果抛出错误,我的脚本仍然需要能够作为独立脚本处理 有没有解决这个问题的聪明方法,或者最好的解决方案就是完全放弃命令行参
有没有解决这个问题的聪明方法,或者最好的解决方案就是完全放弃命令行参数?检查您的文件是否正在运行或是否已导入:
def myFunction(file):
#do stuff to file
if __name__ == '__main__':
#I have not been imported!
try:
file = sys.argv[1]
except:
print "Usage: myFile.py file"
sys.exit()
myFunction(file)
通常的程序是:
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()
如果导入,\uuu name\uuuu
将是!=<代码>“\uuuu main\uuuuuu”,因此实际上不会发生任何事情,导入程序可以调用main(file1,file2)
。但是,如果此脚本是主脚本(即未导入),它将只执行它现在执行的操作,仅在main
中执行