我正在使用谷歌翻译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,translate
的https://github.com/ssut/py-googletrans/blob/master/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)
来检查。
错误消息似乎来自您的解析器,因为用法匹配。