Python 如何为具有不同扩展名的相同文件名创建if语句?
概述 目前,我的目标是在两个文件夹之间显示所有相同的文件名,但有两种情况 1.)Return不比较两个文件名及其扩展名,可以是随机的 2.)如果一个文件不存在于另一个文件夹中,则返回特定文件夹的文件名 工作 我有两条路要走:Python 如何为具有不同扩展名的相同文件名创建if语句?,python,Python,概述 目前,我的目标是在两个文件夹之间显示所有相同的文件名,但有两种情况 1.)Return不比较两个文件名及其扩展名,可以是随机的 2.)如果一个文件不存在于另一个文件夹中,则返回特定文件夹的文件名 工作 我有两条路要走: folder_1= 'C:/Users/gzi/Desktop/test folder/Folder 1' folder_2 = 'C:/Users/gzi/Desktop/test folder/Folder 2' 文件夹1中有一个名为 文件号1.txt & 在文件夹
folder_1= 'C:/Users/gzi/Desktop/test folder/Folder 1'
folder_2 = 'C:/Users/gzi/Desktop/test folder/Folder 2'
文件夹1中有一个名为
文件号1.txt
&
在文件夹2
中有一个类似的文件名,扩展名不同,还有一个额外的文件:
文件号1.jpg
文件号24.jpg
问题
通过查看我的代码,我需要设置选项
以返回文件夹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 1.jpg', 'file number 24.jpg']
['File number 24.jpg']
这是输出,因为文件夹1中不存在文件名(
文件号24
)您可以使用正则表达式标识文件夹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)
您可以使用正则表达式标识文件夹1中的文件,然后只包括文件夹2中没有文件名的文件
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)
嗨,谢谢你花时间回答这个问题!你介意解释一下吗?当然,我已经添加了一些评论,谢谢你花时间回答这个问题!你介意解释一下吗?当然,我添加了一些评论