Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为具有不同扩展名的相同文件名创建if语句?_Python - Fatal编程技术网

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

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 & 在文件夹

概述

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

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

&

文件夹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)

嗨,谢谢你花时间回答这个问题!你介意解释一下吗?当然,我已经添加了一些评论,谢谢你花时间回答这个问题!你介意解释一下吗?当然,我添加了一些评论