我目前正在尝试从Web服务器清理一些媒体文件夹。问题是,每个文件都以多个不同的分辨率复制,而且并非所有文件都是相同的
例如:picture1.jpg
还有picture1-150x150.jpg
、picture1-100x100.jpg
和picture1-50x50.jpg
。
虽然它们中有很多是相同的,但也有很多是不同的
所以首先我尝试了这个:
import os
dir_name = "path"
test = os.listdir(dir_name)
for item in test:
if item.endswith("150x150.jpg"):
os.remove(os.path.join(dir_name, item))
它完成了它的工作,但在添加了各种不同的分辨率和文件扩展名(jpg、jpeg、png、etcpp)后,它变得非常臃肿:
if item.endswith("-150x150.jpg"):
os.remove(os.path.join(dir_name, item))
if item.endswith("-100x100.jpg"):
os.remove(os.path.join(dir_name, item))
if item.endswith("-75x75.jpeg"):
os.remove(os.path.join(dir_name, item))
if item.endswith("-50x50.jpeg"):
os.remove(os.path.join(dir_name, item))
etc...
所以我试着将这些决议输入一个文本文件,并将其用作列表
import os
dir_name = "path"
folder = os.listdir(dir_name)
with open('list.txt') as f:
lines = f.read().splitlines()
for file in folder:
if file.endswith(str(lines)):
os.remove(os.path.join(dir_name, file))
虽然我能够在一定程度上阅读和修改代码,但在谷歌工作了半天之后,我就做到了这一点。 因此,我恳请您提供任何帮助或指导
除了有“-150x150.jpg”的文件名外,还有其他文件名中有破折号吗?如果没有,您可以执行以下操作:
如果你不能保证只有一个破折号,那么我认为regex将是你最好的选择
方法endswith接受元组作为参数,这意味着您可以将所有扩展组合成单个变量
然后将这个变量传递给endswith
以下是我用来证明概念的片段:
这返回:
我认为您需要浏览行的所有元素
然后,如果文件名中出现列表行中的元素,则会将其删除
相关问题 更多 >
编程相关推荐