python3实现合并m3u8格式文件

此文是继将m3u8格式转化为想要的格式而写


代码如下(写的不好多多见谅):

from tkinter import filedialog as tkFileDialog
import os
import sys


# 获取文件夹路径
def get_directory_path():
    default_dir = r"C"  # 设置默认打开目录
    # fname = tkFileDialog.askopenfilename(title=u"选择文件",
    #                                      initialdir=(os.path.expanduser(default_dir)))
    d_name = tkFileDialog.askdirectory(title=u"选择文件夹",
                                      initialdir=(os.path.expanduser(default_dir)))

    print(d_name)
    return d_name


# 新建一个用于保存合并后的文件的文件夹,默认在桌面上,默认名为“合并”
# 在“合并”文件夹下又新建了一个文件夹“batFile”用于保存批处理文件
# 返回结果是两个文件夹的路径
def create_dir():
    default_path = r"C:/Users/Administrator/Desktop"
    default_dir_name = "合并"
    father_folder_name = default_path + "/" + default_dir_name
    is_created = os.path.exists(father_folder_name)
    if not is_created:
        os.mkdir(father_folder_name)

    son_folder_name = father_folder_name + "/batFile"
    is_created = os.path.exists(son_folder_name)
    if not is_created:
        os.mkdir(son_folder_name)

    return father_folder_name, son_folder_name


# 新建一个batFile文件,文件名为  选中的文件夹的名字
def create_bat_file(aim_dir_name):
    batch = '''
    @echo off&setlocal enabledelayedexpansion
    cd /d "{0}"
    for /f "delims=" %%a in ('dir /a-d/b *') do set /a Num+=1
    for /l %%a in (1,1,%Num%) do (
    set file="%%a"
    set list=!list!+!file!
    )
    copy /b %list:~1% "{1}"
    '''                              # 字符串内定义了占位符{0},{1}

    store_dir_name = create_dir()
    file_name = store_dir_name[0] + "/" + aim_dir_name.split('/')[-1]
    batch = batch.format(aim_dir_name, file_name)

    bat_file = store_dir_name[1] + "/" + aim_dir_name.split('/')[-1] + ".bat"
    f = open(bat_file, 'w')
    f.write(batch)
    f.close()
    return bat_file


def execute_bat_file():
    bat_file = create_bat_file(get_directory_path())
    os.system(bat_file)


if __name__ == '__main__':
    execute_bat_file()


实现流程

实现流程在开头的那篇博文中已经说了


几点说明

  1. 这次的实现省略了重命名为ts文件的步骤
  2. 弹出的对话框是要选择一个你想要合并的文件夹


涉及知识

如何打开文件对话框

代码见get_directory_path()函数


新建文件夹,新建文件,写入文件


执行.bat文件

os.system()


遇到的问题

  1.  os.system()好像不能直接执行 bat命令,只能将其写入文件,再通过执行文件间接达到
  2. 使用字符串的format()函数不直接改变字符串,得使用赋值


 待改进

  1. 变量命名太难受了,现在我自己都不知道那些变量是干啥的了...反正我大意是区分了  文件路径名,文件名,保存文件路径名... 但是我没分清楚folder和directory的区别,所以取名字的时候有点乱
  2. 还有什么的话希望看到这篇博文的猿友能够不吝赐教


截图:

python3实现合并m3u8格式文件_第1张图片

python3实现合并m3u8格式文件_第2张图片


最后给合并后的文件加上扩展名.ts就行

python3实现合并m3u8格式文件_第3张图片


那个bat命令来自:https://zhidao.baidu.com/question/1432585771199743619.html?qbl=relate_question_5


你可能感兴趣的:(#,Python学习笔记)