导入的Python模块中的命令行参数

导入的Python模块中的命令行参数,python,command-line,Python,Command Line,这更多的是一个编码风格的问题,但我有一个处理特定文件(或一组文件)的脚本。允许用户将这些文件作为命令行参数提供会更好。当然,用户可能忘记提供这些信息,或者文件名无效,因此我必须在这里介绍try/except 问题是,将来可能有人想导入我的模块。但是,我不知道程序可能需要什么命令行参数。此外,如果在我的模块访问命令行参数时引发错误,那么似乎由导入我的模块的脚本更好地处理它。但是,如果抛出错误,我的脚本仍然需要能够作为独立脚本处理 有没有解决这个问题的聪明方法,或者最好的解决方案就是完全放弃命令行参

这更多的是一个编码风格的问题,但我有一个处理特定文件(或一组文件)的脚本。允许用户将这些文件作为命令行参数提供会更好。当然,用户可能忘记提供这些信息,或者文件名无效,因此我必须在这里介绍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
中执行