python bytes 操作_Python 3:不支持/:“float”和“bytes”的操作数类型

我正在缓慢地尝试将一个旧的python 2代码转换为python 3,但是我遇到了一个障碍,代码如下:seconds = functools.reduce(lambda x,y:x*60+y,map(int,duration.split(":")))

这给了我:TypeError: 'str' does not support the buffer interface

我把它改成:

^{pr2}$

这使得下面的rate = frames/seconds给了我这个错误:TypeError: unsupported operand type(s) for /: 'float' and 'bytes'

所以我试着把原来的字符串转换成这样的浮点seconds = float(functools.reduce(lambda x,y:x*60+y,map(int,duration.split(":"))))

但结果就是TypeError: 'str' does not support the buffer interface

谁能看看吗?在import sys,os,re

import functools

from subprocess import *

if len(sys.argv)<=1:

print ("usage: python oneinn.py filename frames")

sys.exit(0)

try:

fvideo = sys.argv[1]

frames = float(sys.argv[2])

except:

sys.stderr.write("Failed to parse parameters.\n")

sys.exit(1)

output = Popen(["ffmpeg", "-i", fvideo], stderr=PIPE).communicate()

# searching and parsing "Duration: 00:05:24.13," from ffmpeg stderr, ignoring the centiseconds

re_duration = re.compile("Duration: (.*?)\.")

duration = b're_duration.search(output[1]).groups()[0]'

seconds = float(functools.reduce(lambda x,y:x*60+y,map(int,duration.split(":"))))

rate = frames/seconds

print ("Duration = %s (%i seconds)" % (duration, seconds))

print ("Capturing one frame every %.1f seconds" % (1/rate))

output = Popen(["ffmpeg", "-i", fvideo, "-r", str(rate), "-vcodec", "png", 'Preview-%d.png']).communicate()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值