python删除文件夹中具有相同后缀类型文件

使用背景

逛社区发现许多人在解决删除文件夹中非图片文件,删除文件夹中图片等问题的时候,都写了很多代码取实现这一功能,我当时就纳闷了,能几行代码解决的事,为什么要写那么多的代码?

解决下述问题

解决的问题是:删除文件夹中具有相同后缀类型文件。如删除文件夹下所有的JPG文件或者PNG文件

核心函数

str.endswith(suffix[, start[, end]])


函数用法: endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

  • suffix – 该参数可以是一个字符串或者是一个元素。
  • start – 字符串中的开始位置。
  • end – 字符中结束位置。

注:返回值为bool类型

实战演练

现在文件夹中有TXT文件(后缀为.txt),CSV文件(后缀为.csv)和PNG文件(后缀为.png),需要删除PNG文件,只保留TXT和CSV文件。代码如下所示:

import os
file=os.listdir(r'C:\Users\ZFG\Desktop\test')
for i in file:
    if i.endswith('.png'):
        os.remove(r'C:\Users\ZFG\Desktop\test/'+i)#i保存的只是文件夹中的一个相对路径,绝对路径还需要加上文件夹的路径+‘/’

最后展示结果,第一张图为删除前的图片,第二张图为删除后的效果图:

  • 注:当文件夹中需要删除的文件很多很多的时候,这几行简单的代码有奇效!
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 我们可以按以下步骤进行操作: 1. 获取文件夹1和文件夹2下的所有文件名,保存到两个列表。 2. 遍历文件夹1的文件名列表,与文件夹2的文件名列表进行比较,将相同文件名保存到一个新列表。 3. 遍历文件夹2的文件名列表,如果该文件名不在相同文件名列表或在该列表出现的次数多于1次,则删除文件。 4. 完成操作。 以下是Python代码实现: ```python import os def get_filenames(path): # 获取指定路径下的所有文件名,不包括子文件夹文件 filenames = [] for filename in os.listdir(path): if os.path.isfile(os.path.join(path, filename)): filenames.append(os.path.splitext(filename)[0]) return filenames folder1 = 'folder1/' # 文件夹1路径 folder2 = 'folder2/' # 文件夹2路径 # 获取两个文件夹下的所有文件名 folder1_filenames = get_filenames(folder1) folder2_filenames = get_filenames(folder2) # 获取重复的文件名 same_filenames = set(folder1_filenames) & set(folder2_filenames) # 删除文件夹2下多余的文件 for filename in folder2_filenames: if filename not in same_filenames or folder2_filenames.count(filename) > 1: os.remove(os.path.join(folder2, filename + os.path.splitext(filename)[1])) ``` 注意,此代码删除操作为不可逆的,要谨慎操作。建议在测试通过后再进行正式操作。 ### 回答2: 要实现把两个文件夹相同文件名保存并删除文件夹2下多余的文件,并且不考虑文件名的后缀,可以按照以下步骤进行操作: 1. 遍历文件夹1的所有文件,提取每个文件文件名(不包括后缀),并将这些文件名保存到一个集合(例如Set)。 2. 遍历文件夹2的所有文件,提取每个文件文件名(不包括后缀),并进行以下判断: - 如果文件名存在于集合,则表示文件夹1和文件夹2存在相同文件名,可以将其保存到一个新的集合,作为要保留的文件。 - 如果文件名不存在于集合,则表示文件夹2文件是多余的,可以直接删除。 3. 遍历完文件夹2的所有文件后,可以根据新的集合文件名,将这些文件移动到一个新的文件夹作为保留文件。 通过以上步骤,可以实现将两个文件夹相同文件名保存并删除多余文件,而且不考虑文件名的后缀。需要注意的是,文件的移动和删除操作需要谨慎操作,最好在操作前备份文件夹2文件以防止意外数据丢失。 ### 回答3: 要实现这个功能,可以使用编程语言来处理。下面是一个Python的示例代码,可以实现将两个文件夹相同文件名保存,然后删除文件夹2下多余的文件,并且不考虑文件名的后缀。 ```python import os # 获取文件夹1文件名 folder1 = "folder1_path" files1 = os.listdir(folder1) # 获取文件夹2文件名 folder2 = "folder2_path" files2 = os.listdir(folder2) # 保存相同文件名 same_files = [] for file1 in files1: for file2 in files2: # 不考虑文件名的后缀进行比较 if os.path.splitext(file1)[0] == os.path.splitext(file2)[0]: same_files.append(file1) # 删除文件夹2下多余的文件 for file2 in files2: # 不考虑文件名的后缀进行比较 if os.path.splitext(file2)[0] not in same_files: file_path = os.path.join(folder2, file2) os.remove(file_path) ``` 在代码,需要将`folder1_path`和`folder2_path`替换为实际的文件夹路径。代码首先获取文件夹1和文件夹2文件名,并利用双重循环比较两个文件名,如果文件相同(忽略后缀),则将其加入到保存相同文件名的列表。 然后,代码遍历文件夹2文件名,如果该文件名不在保存相同文件名的列表,则认为它是多余的文件,将其删除。 完成上述操作后,文件夹2只会保留与文件夹1相同文件名(忽略后缀)的文件,并且多余的文件已经被删除
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值