gpt4 book ai didi

python - fnmatch 只返回列表中的第一个文件名

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:25 27 4
gpt4 key购买 nike

这里是Python初学者,我快疯了..我开始编写一个脚本,首先搜索 .edl,删除必要的数据并将结果保存到列表中。

完成后,我需要脚本创建一个新列表,其中包含我正在查找的文件的所有绝对路径,但它只继续返回列表中的第一个文件,而不会进一步。

我尝试过用 re./fnmatch/glob() 但我一直遇到类似的问题。

import re
import os
import fnmatch

edlname = input("EDL Filename: ")
rootPath = input("Directory of Quicktimes: ")
names = []
linenum = 0
pattern_name = re.compile("NAME", re.IGNORECASE)

with open(edlname, 'rt') as myfile:
for line in myfile:
linenum += 1
if pattern_name.search(line) != None:
names.append((linenum, line.rstrip('\n')))
for err in names:
filename_list = (err[1].replace("* FROM CLIP NAME: ", "").replace("_MOV", ".mov"))

for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, filename_list):
print(os.path.join(root, filename))

我得到的结果:

Connected to pydev debugger (build 192.6262.63)
EDL Filename: my.edl
Directory of Quicktimes: /Volumes/path/
/Volumes/path/JQNA0417000H.mov
/Volumes/path/path/JQNA0417000H.mov
/Volumes/path/path2/JQNA0417000H.mov
/Volumes/path/path3/JQNA0417000H.mov

第一个问题是它应该在第一场比赛后继续(我确信我最终能弄清楚),但我更大的问题是它只需要第一个剪辑名称,搜索,找到它并且不继续列表..

我真的很想学习Python,但我一直在努力尝试。我觉得每一个微小的胜利都会直接变成下一个灾难,我确信我到目前为止写的代码是可笑的,但我想最好的办法就是继续前进。你们刚开始的时候也有这个问题吗?叹息..我还有很多东西要学。

最佳答案

该行仅将最后一次迭代的更改保存到字符串变量(不是列表):

for err in names:
filename_list = (err[1].replace("* FROM CLIP NAME: ", "").replace("_MOV", ".mov"))

您应该在开头声明一个列表 (filename_list = []) 并将结果附加到列表中:

for err in names:
filename_list.append((err[1].replace("* FROM CLIP NAME: ", "").replace("_MOV", ".mov")))

关于python - fnmatch 只返回列表中的第一个文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57780136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com