我想在通过glob.glob获取的每个文件名之前插入文件的名称,所以我可以通过FFMPEG将它们连接到INTRO + VIDEO + OUTRO来连接它们,文件必须遵循以下顺序:
INSERTED FILE NAME
FILE
插入的文件名
插入的文件名
FILE
插入的文件名
插入的文件名
FILE
插入的文件名称
这是我使用的代码:
import glob
open("Lista.txt", 'w').close()
file = open("Lista.txt", "a")
list =glob.glob("*.mp4")
for item in list:
file.write("%s\n" % item)
file.close()
f = open("Lista.txt", "r")
contents = f.readlines()
f.close()
for x,item in enumerate(list):
contents.insert(x, "CTA\n")
f = open("Lista.txt", "w")
contents = "".join(contents)
f.write(contents)
print f
f.close()
但我以错误的顺序获取值:
INSERTED FILE NAME
插入的文件名
插入的文件名
FILE
FILE
文件
我怎么能解决这个问题? 编辑:正如所指出的那样,问题可能是修改我目前正在使用的列表引起的。
答案 0 :(得分:1)
您正在尝试修改contents
列表。我认为如果使用新列表来获得最终输出,那么它将如下所示简单且更具可读性。而 Python的禅宗陈述
简单总是好于复杂。
file_list
之后,请考虑获得glob.glob
,如下所示。file_list = [" a.mp4"," b.mp4"," c.mp4"]
INSERTFILE
"在file_list
的每个元素之前和之后,以便final_list看起来像final_list = [&#39; INSERTFILE&#39;,&#39; a.mp4&#39;,&#39; INSERTFILE&#39;,&#39; INSERTFILE&#39;, &#39; b.mp4&#39;,&#39; INSERTFILE&#39;,&#39; INSERTFILE&#39;,&#39; c.mp4&#39;,&#39; INSERTFILE&#39;] < / p>
问题摘要是如何实现第2步。
下面的代码将获得第2步。
代码(内联评论:
#File List from glob.glob
file_list = ["a.mp4","b.mp4","c.mp4"]
#File to be added
i = "INSERTFILE"
final_list = []
for x in file_list:
#Create temp_list
temp_list = [i,x,i]
#Extend (not append) to final_list
final_list.extend(temp_list)
#Clean temp_list for next iteration
temp_list = []
print (final_list)
<强>输出:强>
C:\Users\dinesh_pundkar\Desktop>python c.py
['INSERTFILE', 'a.mp4', 'INSERTFILE', 'INSERTFILE', 'b.mp4', 'INSERTFILE', 'INSERTFILE', 'c.mp4', 'INSERTFILE']