|
30鱼币
想问一下我在合并ts文件这步哪里出现了问题,跑出来是乱码而且也得不到合并后的文件(代码如下,完整文件代码在附件)
- #开始合并TS文件形成一个完整的电影
- def merge():
- file_names=[]
- with open("ts_file.txt",mode="r",encoding="utf-8") as f:
- for l in f:
- if l.startswith("#"):
- continue
- else:
- file_name = l.split('/')[-1].strip("\n")
- file_names.append(file_name)
- # print(file_names)
- now_dir = os.getcwd()
- os.chdir('./ts_s/')
- temp = []
- n = 1
- for i in range(len(file_names)):
- name = file_names[i]
- temp.append(name)
- if i != 0 and i % 100 == 0:
- names ="+".join(temp)
- os.system(f'copy /b {names} {n}.ts')
- n = n+1
- temp=[]
- else:
- continue
- names = "+".join(temp)
- os.system(f'copy /b {names} {n}.ts')
- n = n + 1
- temp_2 = []
- for i in range(1,n+1):
- temp_2.append(f'{i}.ts')
- files = "+".join(temp_2)
- os.system(f'copy /b {files} 素媛.mp4')
- os.chdir(now_dir)
- print("welcome to my wanderland!")
复制代码
这段代码的主要问题在于你使用了 Windows 的 copy /b 命令来合并文件。Python 脚本应该是跨平台的,所以我们可以用 Python 自带的文件操作来实现合并功能。另外,注意在合并所有分段文件之前,先合并每100个分段文件的操作可能是多余的。你可以尝试以下修改后的代码:
- import os
- # 开始合并TS文件形成一个完整的电影
- def merge():
- file_names = []
- with open("ts_file.txt", mode="r", encoding="utf-8") as f:
- for l in f:
- if l.startswith("#"):
- continue
- else:
- file_name = l.split('/')[-1].strip("\n")
- file_names.append(file_name)
- # print(file_names)
- now_dir = os.getcwd()
- os.chdir('./ts_s/')
- with open('素媛.mp4', 'wb') as output:
- for name in file_names:
- with open(name, 'rb') as input:
- output.write(input.read())
- os.chdir(now_dir)
- print("welcome to my wanderland!")
复制代码
这个修改后的代码使用了 Python 的 open() 函数来以二进制模式读取和写入文件。这样,你就可以在不同的操作系统上运行这段代码,而不仅仅是在 Windows 上。现在这段代码应该能够正确合并所有的 TS 文件,并将它们存储到一个名为 '素媛.mp4' 的文件中。
|
最佳答案
查看完整内容
这段代码的主要问题在于你使用了 Windows 的 copy /b 命令来合并文件。Python 脚本应该是跨平台的,所以我们可以用 Python 自带的文件操作来实现合并功能。另外,注意在合并所有分段文件之前,先合并每100个分段文件的操作可能是多余的。你可以尝试以下修改后的代码:
这个修改后的代码使用了 Python 的 open() 函数来以二进制模式读取和写入文件。这样,你就可以在不同的操作系统上运行这段代码,而不仅仅是在 Windows ...
|