Python 3.x 仅按名称进行比较,而不按名称进行比较+;使用现有代码进行扩展;Python3.x
Python3.x代码(如下所列)在比较来自两个不同目录(Input_1和Input_2)的文件和查找匹配的文件(两个目录之间相同)方面做得非常好。是否有一种方法可以更改现有代码(如下所示),以便在两个目录之间查找名称相同的文件。(即,仅按名称查找匹配项,而不按名称+扩展名查找匹配项)Python 3.x 仅按名称进行比较,而不按名称进行比较+;使用现有代码进行扩展;Python3.x,python-3.x,filecompare,Python 3.x,Filecompare,Python3.x代码(如下所列)在比较来自两个不同目录(Input_1和Input_2)的文件和查找匹配的文件(两个目录之间相同)方面做得非常好。是否有一种方法可以更改现有代码(如下所示),以便在两个目录之间查找名称相同的文件。(即,仅按名称查找匹配项,而不按名称+扩展名查找匹配项) 例如: 目录1包含:Tacoma.xlsx、Prius.txt、Landcruiser.txt 目录2包含:Tacoma.doc、Avalon.xlsx、Rav4.doc “TACOMA”是两个不同的文件(不
- 目录1包含:Tacoma.xlsx、Prius.txt、Landcruiser.txt
- 目录2包含:Tacoma.doc、Avalon.xlsx、Rav4.doc
“TACOMA”是两个不同的文件(不同的扩展名)。我是否可以使用basename或splitext仅按名称比较文件,并使其返回“TACOMA”作为匹配文件?要获取文件名,请尝试:
from os import path
fil='..\file.doc'
fil_name = path.splitext(fil)[0].split('\\')[-1]
这将文件
存储在文件名
中。因此,要比较文件,请运行:
from os import listdir , path
from os.path import isfile, join
def compare(dir1,dir2):
files1 = [f for f in listdir(dir1) if isfile(join(dir1, f))]
files2 = [f for f in listdir(dir2) if isfile(join(dir2, f))]
common_files = []
for i in files1:
for j in files2:
if(path.splitext(i)[0] == path.splitext(j)[0]): #this compares it name by name.
common_files.append(i)
return common_files
现在就叫它:
common_files = compare(dir1,dir2)
正如您所知,python是区分大小写的,如果您想要普通文件,无论它们包含大写字母还是小写字母,那么请不要:
if(path.splitext(i)[0] == path.splitext(j)[0]):
使用:
你的代码工作得很好!再次感谢你,无限TM!代码的最终用途如下,供其他人查看。(注意:Input_3和Input_4是目录)
现在检查我的答案谢谢。我把你最初的评论玩弄了一段时间,没能让它发挥作用。我会尝试一下,让你知道我的想法。Infinity TM,代码运行得非常好!再次感谢!我稍微修改了最后一行,省去了文件扩展名:common_files.append(path.splitext(I)[0])
if(path.splitext(i)[0] == path.splitext(j)[0]):
if(path.splitext(i)[0].lower() == path.splitext(j)[0].lower()):
def Compare():
Input_3 = #Your directory here
Input_4 = #Your directory here
files1 = [f for f in listdir(Input_3) if isfile(join(Input_3, f))]
files2 = [f for f in listdir(Input_4) if isfile(join(Input_4, f))]
common_files = []
for i in files1:
for j in files2:
if(path.splitext(i)[0].lower() == path.splitext(j)[0].lower()):
common_files.append(path.splitext(i)[0])