Чтобы получить имя файла, попробуйте:
from os import path
fil='..\file.doc'
fil_name = path.splitext(fil)[0].split('\\')[-1]
Это хранит file
в file_name
. Чтобы сравнить файлы, запустите:
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]):
используйте:
if(path.splitext(i)[0].lower() == path.splitext(j)[0].lower()):
Ваш код работал очень хорошо! Еще раз спасибо, Infinity TM! Окончательное использование кода выглядит следующим образом. (Примечание: что Input_3 и Input_4 являются каталогами)
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])