Argparse:参数翻译太少 API
Argparse: too few arguments translation API
我正在使用 google 翻译 API,它显示错误:
translate boy -d french
usage: [-h] [-d DEST] [-s SRC] [-c] text
: error: too few arguments
API的代码是
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import sys
from googletrans import Translator
def main():
parser = argparse.ArgumentParser(
description='Python Google Translator as a command-line tool')
parser.add_argument('text', help='The text you want to translate.')
parser.add_argument('-d', '--dest', default='en',
help='The destination language you want to translate. (Default: en)')
parser.add_argument('-s', '--src', default='auto',
help='The source language you want to translate. (Default: auto)')
parser.add_argument('-c', '--detect', action='store_true', default=False,
help='')
args = parser.parse_args()
translator = Translator()
if args.detect:
result = translator.detect(args.text)
result = """
[{lang}, {confidence}] {text}
""".strip().format(text=args.text,
lang=result.lang, confidence=result.confidence)
print(result)
return
result = translator.translate(args.text, dest=args.dest, src=args.src)
result = u"""
[{src}] {original}
->
[{dest}] {text}
[pron.] {pronunciation}
""".strip().format(src=result.src, dest=result.dest, original=result.origin,
text=result.text, pronunciation=result.pronunciation)
print(result)
if __name__ == '__main__':
main()
我认为这是由于 argparse
模块,但我不确定。我是新手所以请完整解释。提前致谢。
糟糕 - 我以为这段代码是你自己的;它似乎是来自 github、https://github.com/ssut/py-googletrans/blob/master/translate
的 translate
脚本
所以没有另一个解析器。
仍然是建议应用的诊断 - 打印 sys.argv
以查看解析器正在获取什么,在解析后打印 args
,然后(暂时)跳过对 Translate
的调用.如果可能的话 运行 和 py3
。
你的解析器
parser = argparse.ArgumentParser(
description='Python Google Translator as a command-line tool')
parser.add_argument('text', help='The text you want to translate.')
parser.add_argument('-d', '--dest', default='en',
help='The destination language you want to translate. (Default: en)')
parser.add_argument('-s', '--src', default='auto',
help='The source language you want to translate. (Default: auto)')
parser.add_argument('-c', '--detect', action='store_true', default=False,
help='')
args = parser.parse_args()
print(args)
产生:
1347:~/mypy$ python2 stack47849057.py
usage: stack47849057.py [-h] [-d DEST] [-s SRC] [-c] text
stack47849057.py: error: too few arguments
1144:~/mypy$ python2 stack47849057.py boy
Namespace(dest='en', detect=False, src='auto', text='boy')
1144:~/mypy$ python2 stack47849057.py boy -d french
Namespace(dest='french', detect=False, src='auto', text='boy')
1145:~/mypy$ python3 stack47849057.py
usage: stack47849057.py [-h] [-d DEST] [-s SRC] [-c] text
stack47849057.py: error: the following arguments are required: text
换句话说,它适用于您的输入。如 Py3 中所述,错误消息更清晰。
我怀疑 Translator
有问题。它可能有自己的解析器,甚至可能会修改 sys.argv
。您也可以 print(sys.argv)
检查一下。
错误消息似乎来自您的解析器,因为用法匹配。
我正在使用 google 翻译 API,它显示错误:
translate boy -d french
usage: [-h] [-d DEST] [-s SRC] [-c] text
: error: too few arguments
API的代码是
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import sys
from googletrans import Translator
def main():
parser = argparse.ArgumentParser(
description='Python Google Translator as a command-line tool')
parser.add_argument('text', help='The text you want to translate.')
parser.add_argument('-d', '--dest', default='en',
help='The destination language you want to translate. (Default: en)')
parser.add_argument('-s', '--src', default='auto',
help='The source language you want to translate. (Default: auto)')
parser.add_argument('-c', '--detect', action='store_true', default=False,
help='')
args = parser.parse_args()
translator = Translator()
if args.detect:
result = translator.detect(args.text)
result = """
[{lang}, {confidence}] {text}
""".strip().format(text=args.text,
lang=result.lang, confidence=result.confidence)
print(result)
return
result = translator.translate(args.text, dest=args.dest, src=args.src)
result = u"""
[{src}] {original}
->
[{dest}] {text}
[pron.] {pronunciation}
""".strip().format(src=result.src, dest=result.dest, original=result.origin,
text=result.text, pronunciation=result.pronunciation)
print(result)
if __name__ == '__main__':
main()
我认为这是由于 argparse
模块,但我不确定。我是新手所以请完整解释。提前致谢。
糟糕 - 我以为这段代码是你自己的;它似乎是来自 github、https://github.com/ssut/py-googletrans/blob/master/translate
的translate
脚本
所以没有另一个解析器。
仍然是建议应用的诊断 - 打印 sys.argv
以查看解析器正在获取什么,在解析后打印 args
,然后(暂时)跳过对 Translate
的调用.如果可能的话 运行 和 py3
。
你的解析器
parser = argparse.ArgumentParser(
description='Python Google Translator as a command-line tool')
parser.add_argument('text', help='The text you want to translate.')
parser.add_argument('-d', '--dest', default='en',
help='The destination language you want to translate. (Default: en)')
parser.add_argument('-s', '--src', default='auto',
help='The source language you want to translate. (Default: auto)')
parser.add_argument('-c', '--detect', action='store_true', default=False,
help='')
args = parser.parse_args()
print(args)
产生:
1347:~/mypy$ python2 stack47849057.py
usage: stack47849057.py [-h] [-d DEST] [-s SRC] [-c] text
stack47849057.py: error: too few arguments
1144:~/mypy$ python2 stack47849057.py boy
Namespace(dest='en', detect=False, src='auto', text='boy')
1144:~/mypy$ python2 stack47849057.py boy -d french
Namespace(dest='french', detect=False, src='auto', text='boy')
1145:~/mypy$ python3 stack47849057.py
usage: stack47849057.py [-h] [-d DEST] [-s SRC] [-c] text
stack47849057.py: error: the following arguments are required: text
换句话说,它适用于您的输入。如 Py3 中所述,错误消息更清晰。
我怀疑 Translator
有问题。它可能有自己的解析器,甚至可能会修改 sys.argv
。您也可以 print(sys.argv)
检查一下。
错误消息似乎来自您的解析器,因为用法匹配。