Python。从列表中删除具有其他扩展名的类似项目

Posted

技术标签:

【中文标题】Python。从列表中删除具有其他扩展名的类似项目【英文标题】:Python. Remove similar items with other extension from list 【发布时间】:2021-10-01 06:52:51 【问题描述】:

我有问题。 这段代码工作后:

path, dirs, files = next(os.walk(f':stories/'))
    print(files)

我有一个列表,包含不同的字符串:

['2021-07-23_14-52-16_UTC.jpg', '2021-07-23_14-52-16_UTC.mp4',
 '2021-07-23_15-59-38_UTC.jpg', '2021-07-23_15-59-38_UTC.mp4',
 '2021-07-23_17-23-06_UTC.jpg', '2021-07-23_17-23-06_UTC.mp4',
 '2021-07-23_19-42-32_UTC.jpg', '2021-07-23_20-04-18_UTC.jpg',
 '2021-07-23_20-04-18_UTC.mp4', '2021-07-23_20-38-03_UTC.jpg',
 '2021-07-23_20-38-03_UTC.mp4', '2021-07-23_21-38-22_UTC.jpg',
 '2021-07-23_21-38-22_UTC.mp4', '2021-07-23_21-42-07_UTC.jpg',
 '2021-07-23_21-42-07_UTC.mp4', '2021-07-23_21-42-34_UTC.jpg',
 '2021-07-23_21-42-34_UTC.mp4', '2021-07-24_01-01-30_UTC.jpg',
 '2021-07-24_01-01-30_UTC.mp4', '2021-07-24_06-57-14_UTC.jpg',
 '2021-07-24_10-22-46_UTC.jpg', '2021-07-24_12-38-47_UTC.jpg',
 '2021-07-24_13-07-34_UTC.jpg']

问题是:如果有同名的.mp4文件,我需要删除.jpg文件。

我的解决方案是:

for _ in files:
    temp = _.replace('.mp4', '.jpg')
    if temp in files:
        os.remove(_)

但这部分代码会删除所有文件。

有人可以帮助我或告诉我,我的错误是什么。谢谢。

【问题讨论】:

别忘了缩进 os.remove(_) 【参考方案1】:

问题是replace() 可能实际上并没有改变任何东西,所以您要删除列表中的每个文件。试试这个:

for file in files:
    temp = _.replace('.mp4', '.jpg')
    if temp != file and temp in files:
        os.remove(file)

【讨论】:

尝试使用file 而不是_【参考方案2】:

你可以试试这个

l=['2021-07-23_14-52-16_UTC.jpg', '2021-07-23_14-52-16_UTC.mp4',
 '2021-07-23_15-59-38_UTC.jpg', '2021-07-23_15-59-38_UTC.mp4',
 '2021-07-23_17-23-06_UTC.jpg', '2021-07-23_17-23-06_UTC.mp4',
 '2021-07-23_19-42-32_UTC.jpg', '2021-07-23_20-04-18_UTC.jpg',
 '2021-07-23_20-04-18_UTC.mp4', '2021-07-23_20-38-03_UTC.jpg',
 '2021-07-23_20-38-03_UTC.mp4', '2021-07-23_21-38-22_UTC.jpg',
 '2021-07-23_21-38-22_UTC.mp4', '2021-07-23_21-42-07_UTC.jpg',
 '2021-07-23_21-42-07_UTC.mp4', '2021-07-23_21-42-34_UTC.jpg',
 '2021-07-23_21-42-34_UTC.mp4', '2021-07-24_01-01-30_UTC.jpg',
 '2021-07-24_01-01-30_UTC.mp4', '2021-07-24_06-57-14_UTC.jpg',
 '2021-07-24_10-22-46_UTC.jpg', '2021-07-24_12-38-47_UTC.jpg',
 '2021-07-24_13-07-34_UTC.jpg']
for i in l[:]:
    if i.replace('.jpg','.mp4') in l:
        os.remove(i)
print(l)

【讨论】:

以上是关于Python。从列表中删除具有其他扩展名的类似项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 删除对象列表中的重复项

Python:如何在迭代列表时从列表中删除元素而不跳过未来的迭代

在 Python 中从序列中删除项目的优雅方法? [复制]

在引用其他表时在单个表上使用Delete查询

如何根据多个条件并使用 linq 从通用列表中删除项目

具有类似 STL 接口的 Python 列表