Python - 在序列后面的txt上插入行而不覆盖

时间:2016-10-17 21:07:24

标签: python video ffmpeg

我想在通过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
文件

我怎么能解决这个问题? 编辑:正如所指出的那样,问题可能是修改我目前正在使用的列表引起的。

1 个答案:

答案 0 :(得分:1)

您正在尝试修改contents列表。我认为如果使用新列表来获得最终输出,那么它将如下所示简单且更具可读性。而 Python的禅宗陈述

简单总是好于复杂。

  1. 在执行file_list之后,请考虑获得glob.glob,如下所示。
  2.   

    file_list = [" a.mp4"," b.mp4"," c.mp4"]

    1. 现在您要添加" INSERTFILE"在file_list的每个元素之前和之后,以便final_list看起来像
    2.   

      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>

      1. 您将写入文件的final_list。
      2. 问题摘要是如何实现第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']