如何为具有不同扩展名的相同文件名创建if语句?

2024-09-19 23:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

概述

目前,我的目标是在两个文件夹之间显示所有相同的文件名,但有两种情况

1.)Return不比较两个文件名的扩展名,可以是随机的

2.)如果一个文件在另一个文件夹中不存在,则返回特定文件夹的文件名

工作

我有两条路要走:

folder_1= 'C:/Users/gzi/Desktop/test folder/Folder 1'

folder_2 = 'C:/Users/gzi/Desktop/test folder/Folder 2'

Folder 1中有一个名为

File number 1.txt

&

Folder 2内部有一个类似的文件名,扩展名不同,还有一个额外的文件:

File number 1.jpg

File number 24.jpg

问题

通过查看代码,我需要将choices设置为从folder_2返回所有文件,但如果两个文件夹具有相似的文件名(不包括扩展名),则不显示该文件名

我的当前代码

import os
import glob


folder_1= 'C:/Users/gzu/Desktop/test folder/Folder 1'

folder_2 = 'C:/Users/gzu/Desktop/test folder/Folder 2'

choices = os.listdir(folder_2)
print(choices)

电流输出

['File number 1.jpg', 'file number 24.jpg']

所需输出

['File number 24.jpg']

这是输出,因为文件名(File number 24)不存在于Folder 1


Tags: 文件代码testimport文件夹number文件名folder
1条回答
网友
1楼 · 发布于 2024-09-19 23:32:17

可以使用regex标识文件夹1中的文件,然后只包含文件夹2中没有文件夹1中文件名的文件

import os
import glob
import re

folder_1 = 'C:/Users/gzu/Desktop/test folder/Folder 1'

folder_2 = 'C:/Users/gzu/Desktop/test folder/Folder 2'

# build a list of all filenames in folder 1, using regex which strips off the file extension
folder_1_filenames = [
       re.sub('\..*', '', f)
       for f in os.listdir(folder_1)
]

# choices then becomes every file in folder 2 if the filename is not in folder_1_filenames    
choices = [
      f for f in os.listdir(folder_2)
      if re.sub('\..*', '', f) not in folder_1_filenames
]

print(choices)

相关问题 更多 >