gpt4 book ai didi

python - 如何将 optparse 选项与 python 中的变量名称集成

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:35 25 4
gpt4 key购买 nike

我是 python 和 optparse 模块的新手。我已经想出如何使用 optparse 在 python 脚本中添加选项,但是在将选项与我在 python 中的变量名称链接时遇到了问题。

import sys
from optparse import OptionParser

def main ():
parser = OptionParser()
parser.add_option("-f", "--file", dest="in_filename",
help="Input fasta file", metavar="FILE")
parser.add_option("-o", "--out", dest="out_filename",
help="Output fasta file", metavar="FILE")
parser.add_option("-i", "--id", dest="id",
help="Id name to change", metavar="ID")
(options,args) = parser.parse_args()

with open(f, 'r') as fh_in:
with open(o, 'w') as fh_out:
id = i
result = {}
count = 1
for line in fh_in:
line = line.strip()
if line.startswith(">"):
line = line[1:]
result[line] = id + str(count)
count = count + 1
header = ">" + str(result[line])
fh_out.write(header)
fh_out.write("\n")
else:
fh_out.write(line)
fh_out.write("\n")

main()

当我运行它时,我得到以下回溯和错误:

python header_change.py -f consensus_seq.txt -o consensus_seq_out.fa -i "my_test"
Traceback (most recent call last):
File "/Users/upendrakumardevisetty/Documents/git_repos/scripts/header_change.py", line 36, in <module>
main()
File "/Users/upendrakumardevisetty/Documents/git_repos/scripts/header_change.py", line 18, in main
with open(f, 'r') as fh_in:
NameError: global name 'f' is not defined

谁能指出我做错了什么。

最佳答案

这里有两个问题。


首先,作为the optparse tutorial显示,optparse 不创建全局变量,它在返回的 options 命名空间中创建属性:

parse_args() returns two values:

  • options, an object containing values for all of your options—e.g. if --file takes a single string argument, then options.file will be the filename supplied by the user, or None if the user did not supply that option
  • args, the list of positional arguments leftover after parsing options

因此,如果用户键入 -f,您将不会得到 f,您将得到 options.f.


其次,f 无论如何都不是正确的名称。您明确指定了一个不同的目的地,而不是默认目的地:

parser.add_option("-f", "--file", dest="in_filename",
help="Input fasta file", metavar="FILE")

因此它将按照您的要求执行并将文件存储在 in_filename 中。


对于其他选项也是如此。所以,您的代码应该像这样开始:

with open(options.in_filename, 'r') as fh_in:
with open(options.out_filename, 'w') as fh_out:

关于python - 如何将 optparse 选项与 python 中的变量名称集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com