【问题标题】:command line optional arguments命令行可选参数
【发布时间】:2012-10-06 22:01:46
【问题描述】:

所以我仍在编码,甚至不确定这一切是否有效,但是当我什至无法运行时,很难对其进行测试。这是我第一次尝试使用多个可选输入,每次运行时都会出现错误:

“命令行参数错误:参数“查询”。文件不可访问:`sequence_filename'”

命令行输入是一个文件名(需要),然后是函数将运行的可选输出文件,然后是 prot(如果是蛋白质,则默认)或 na(如果是核酸)的可选变量

if __name__ == '__main__':
    sequence_filename = sys.argv[1]
    output_filename = ''
    if sys.argv > 3:
        output_filename = sys.argv[2]
        if sys.argv[3] == 'na':
            input = 'na'
        else:
            input = 'prot'
    elif sys.argv > 2:
        output_filename = sys.argv[2]

    main( sequence_filename, output_filename, input )

提前致谢。

【问题讨论】:

  • 您是否传递了文件的完整路径?
  • 没有。它只是我正在使用的同一文件夹中的文件名(something.fa)。这是你的意思吗?
  • 应该是if sys.argv > 3:而不是if len(sys.argv) > 3:

标签: python command-line-arguments biopython sys


【解决方案1】:

如果你在做复杂的命令行界面,你应该使用argparse,它会根据你指定的参数自动解析并生成界面。

如果您运行的是 python 2.6 或更早版本,则可以使用 optparse,这是由 argparse 替换的旧模块。

【讨论】:

  • 即使您不使用“严肃的命令行界面”,argparse 也是一个好主意 - 它更容易且不易出错。
  • 不过,如果我只需要一个脚本来处理我在 argv[1] 上指定的文件,我就不会使用它。但是一旦你得到标志和可选参数,那当然是需要的。
  • 唉,我正在运行旧版本的 python 并且 argparse 似乎不存在。当我导入它时,我被告知了很多。
猜你喜欢
  • 2017-04-04
  • 1970-01-01
  • 2015-07-05
  • 2012-03-08
  • 2022-01-16
  • 2017-11-04
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多