У меня есть файлы, которые я хотел бы переместить в разные папки в зависимости от их имени файла. примеры имен файлов:
296_A_H
1_20070405.pdfimport shutil import os #filepath to files source = 'C:\\Users\\Desktop\\test folder' #filepath to destination folders dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1' dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2' dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10' dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20' files = [os.path.join(source, f) for f in os.listdir(source)] #move files to destination folders based on file path and name for f in files: if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")): shutil.copy(f,dest1) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")): shutil.copy(f,dest2) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")): shutil.copy(f, dest3) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")): shutil.copy(f, dest4)
296_A_H_10
20070405.pdfimport shutil import os #filepath to files source = 'C:\\Users\\Desktop\\test folder' #filepath to destination folders dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1' dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2' dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10' dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20' files = [os.path.join(source, f) for f in os.listdir(source)] #move files to destination folders based on file path and name for f in files: if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")): shutil.copy(f,dest1) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")): shutil.copy(f,dest2) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")): shutil.copy(f, dest3) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")): shutil.copy(f, dest4)
296_A_H_2
20070405.pdfimport shutil import os #filepath to files source = 'C:\\Users\\Desktop\\test folder' #filepath to destination folders dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1' dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2' dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10' dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20' files = [os.path.join(source, f) for f in os.listdir(source)] #move files to destination folders based on file path and name for f in files: if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")): shutil.copy(f,dest1) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")): shutil.copy(f,dest2) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")): shutil.copy(f, dest3) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")): shutil.copy(f, dest4)
296_A_H_20
20070405.pdfimport shutil import os #filepath to files source = 'C:\\Users\\Desktop\\test folder' #filepath to destination folders dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1' dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2' dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10' dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20' files = [os.path.join(source, f) for f in os.listdir(source)] #move files to destination folders based on file path and name for f in files: if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")): shutil.copy(f,dest1) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")): shutil.copy(f,dest2) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")): shutil.copy(f, dest3) elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")): shutil.copy(f, dest4)
Соответствующие имена папок:
296_A_H_1
296_A_H_2
296_A_H_10
296_A_H_20
Я хочу переместить файлы в правильную папку на основе имени файла. Например, файл 296_A_H_1
import shutil
import os
#filepath to files
source = 'C:\\Users\\Desktop\\test folder'
#filepath to destination folders
dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1'
dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2'
dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10'
dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20'
files = [os.path.join(source, f) for f in os.listdir(source)]
#move files to destination folders based on file path and name
for f in files:
if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")):
shutil.copy(f,dest1)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")):
shutil.copy(f,dest2)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")):
shutil.copy(f, dest3)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")):
shutil.copy(f, dest4)
20070405.pdf должен находиться в папке 296_A_H_1. Вот код, который у меня есть до сих пор:
import shutil
import os
#filepath to files
source = 'C:\\Users\\Desktop\\test folder'
#filepath to destination folders
dest1 = 'C:\\Users\\Desktop\\move file\\296_A_H_1'
dest2 = 'C:\\Users\\Desktop\\move file\\296_A_H_2'
dest3 = 'C:\\Users\\Desktop\\move file\\296_A_H_10'
dest4 = 'C:\\Users\\Desktop\\move file\\296_A_H_20'
files = [os.path.join(source, f) for f in os.listdir(source)]
#move files to destination folders based on file path and name
for f in files:
if (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_1_")):
shutil.copy(f,dest1)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_2_")):
shutil.copy(f,dest2)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_10")):
shutil.copy(f, dest3)
elif (f.startswith("C:\\Users\\Desktop\\test folder\\296_A_H_20")):
shutil.copy(f, dest4)
Этот код работает, но мне нужно переместить 400 файлов в разные папки и написать сотни операторов elif. Как я могу это сделать, сопоставив имя файла с папкой назначения и используя Shutil, чтобы скопировать файл в эту папку? Я только начинаю изучать Python, поэтому любая помощь здесь будет очень признательна!