Python。从列表中删除具有其他扩展名的相似项目
Python. Remove similar items with other extension from list
我有问题。
这段代码工作后:
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(_)
但这部分代码会删除所有文件。
有人可以帮助我或告诉我,我的错误是什么。谢谢
问题是 replace()
实际上可能不会更改任何内容,因此您要删除列表中的每个文件。试试这个:
for file in files:
temp = _.replace('.mp4', '.jpg')
if temp != file and temp in files:
os.remove(file)
你可以试试这个
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)
我有问题。 这段代码工作后:
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(_)
但这部分代码会删除所有文件。
有人可以帮助我或告诉我,我的错误是什么。谢谢
问题是 replace()
实际上可能不会更改任何内容,因此您要删除列表中的每个文件。试试这个:
for file in files:
temp = _.replace('.mp4', '.jpg')
if temp != file and temp in files:
os.remove(file)
你可以试试这个
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)