Python的知识点运用-2(排序&&找差值及修正ts合成顺序)

本章内容,涉及到上一章的视频爬虫,但是问题不大。最主要还是基础内容。

基础内容:排序,找出缺失值。

学习本章的前,我是建议去跑一遍gitee上的代码的。


排序问题由来

视频获取后,根据命名,排序是错的。问题除了命名以外还有一个因素就是多线程并发的原因。

好了,看图说话;64a056cd72a36596f65a76908b1d6479.png16d48fcfbda40a4cae181bd99cc88458.png看到了吗,顺序还是很明显不对的,这样合成视频的时候,那就是十分混乱的。所以需要解决一下。

def sava_Video(self):
        """合成代码"""
        path = 'report/'
        save_list = []
        files = os.listdir(path)
        print(len(files),[_[:-3] for _ in files])
        with open('res.txt','r',encoding='utf-8') as r:
            values = r.read()
            sorted_list = [x[-12:-4] for _, x in sorted(zip(files, eval(values)))]
            print(len(sorted_list),sorted_list)

总体的代码就是这样了。跑一下看看:

25d854790ef518e890e9fd55abb2cce2.png看到,还是不一样啊,别急,上面的打印是ts文件的,这正是我要处理的。

f6ed19545b0692a46a80523425d94460.png这样看,基本上以对上了,没错了。

为什么这么写?因为傻了。这样本质上并没有排序。

这也证明了,代码还是写少了。

思路是这样没错,但是,其实并没有必要。

正解: 我只需要获取

with open('res.txt','r',encoding='utf-8') as r:
      values = r.read()

即可,为什么,不是需要排序然后合成吗?

这就是误区,为什么一定要给ts文件排序?

为什么一定要读取下载好的ts文件名称进行 合并,这不就把简单的事情复杂化了吗!

我们只需要获取.m3u8解析出来的ts文件名称序列即可,因为这已经是排序的了。然后我们提取关键字进步查找合并即可。

def sava_Video(self):
        """合成代码"""
        path = 'report/'
        files = os.listdir(path)
        print(len(files),[_[:-3] for _ in files])
        with open('res.txt','r',encoding='utf-8') as r:
            values = r.read()
        for file_path in eval(values):
            with open(path+file_path[-12:-4]+'.ts', 'rb') as f1:
                with open(path + "电影.mp4", 'ab') as f2:
                            f2.write(f1.read())

看到了吗。挖取名称,按照顺序循环,查找指定path中的文件名一一合并即可,不需要再对files中的ts文件进行排序了。

再次排序这样做会让合并出的mp4播放起来卡顿。

找出缺失值

再上面的基础上,我还整了一个错误,

sorted_list = [x[-12:-4] for _, x in sorted(zip(files[:-3], eval(values)))]

嗯哼,瞬间麻痹,排序出来少了三个值,为此没多想,直接找少了哪三个值。

你会怎么想?循环判断?还是什么?

集合解法:

file_set = set([_[:-3] for _ in files])
list_set = set(sorted_list)

missing_set = file_set - list_set
missing_values = list(missing_set)
print("缺失值:",missing_values)

这就搞定了,少了什么值就出来了。然而并没有什么卵用,刚开始的思路纠错了。

好了,本章修正后的获取电影源码放在了:https://gitee.com/qinganan_admin/reptile-case/tree/master/%E7%94%B5%E5%BD%B1

——————修成合成顺序.py————————

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清安无别事

慢慢的积累一杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值