小编cdp*_*dpp的帖子

argparse 未正确处理子解析器中的缩写

(在python 3.6.0上运行)

长话短说

Usage: prog.py {caesar | vigenere} [key]

parser = argparse.ArgumentParser()
subp = parser.add_subparsers()
caesar = subp.add_parser("caesar", aliases=["c"], allow_abbrev=True)
args = parser.parse_args()
$ python prog.py caes 123
prog.py: error: invalid choice: 'caes' (choose from 'caesar', 'c')
Run Code Online (Sandbox Code Playgroud)

为什么subparser缩写即使带有 也无效allow_abbrev=True


长版

argparse基本上,在接受缩写subparsers名称/别名方面存在问题。

这是代码:

Usage: prog.py [caesar] [key]

import sys, argparse

def main(argv):
parser = argparse.ArgumentParser
         (description="runs text through X cipher")
subp = parser.add_subparsers\
         (help="sub-command help")

#<ArgumentParser object>
caesar = subp.add_parser\
         ("caesar", aliases=["c"], allow_abbrev=True) …
Run Code Online (Sandbox Code Playgroud)

python case-sensitive case-insensitive argparse subparsers

5
推荐指数
1
解决办法
3041
查看次数

ffmpeg 无法识别 x265 选项

我正在尝试使用 ffmpeg 的内置x265.VOB通过h.265编解码器处理文件。

我从 ffmpeg 文档中了解到:

-c:v libx265告诉 ffmpeg 将h.265编解码器用于视频流

-x265-params将选项传递给x265编码器而不是ffmpeg

但是每当尝试运行该命令时,ffmpeg 似乎都无法识别/将选项传递给 x265。

它给出了错误

Unrecognized option '-y4m'.
Error splitting the argument list: Option not found

为什么是这样?

这是命令(编辑间距):

C:\ffmpeg (20170123-e371f03-win64-static)\bin> 
   ffmpeg -i concat:'input1.VOB'\'input.VOB'
   -map 0:v -map 0:a -r 24000/1001 -f yuv4mpegpipe 
   -c:v libx265 -x265-params 
   --y4m --fps 24000/1001 -p veryslow --open-gop --bframes 16 
   --b-p yramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75 
   --no-strong -intra-smoothing --psy-rd 1.6 …
Run Code Online (Sandbox Code Playgroud)

encoding ffmpeg vob h.265

4
推荐指数
1
解决办法
5740
查看次数