#python #sorting #if-statement
Вопрос:
Я работаю над проектом, в котором мне нужно отсортировать файлы .jpg и папки, содержащие файлы .jpg. У меня есть другие функциональные сценарии, которые я намерен включить в этот скрипт на python позже. Во-первых, я реализовал в первом приведенном ниже сценарии подсчет количества подчеркиваний в файле и принятие мер на основе результата, и это успешно работает. Мне нужна помощь в создании логики, которая будет проходить через файлы изображений .jpg, и если в файлах более одного подчеркивания, программа переместит файлы в папку с ошибками. Также мы будем очень признательны за любые отзывы о том, как оптимизировать этот скрипт!
from pathlib import Path
import shutil, os, time, glob
timestr = time.strftime("%Y%m%d-%H%M%S")
folder = 'D:\test\testing'
working_folder = 'DitaTest1'
full_path = Path(os.path.join(folder, working_folder))
test_path = folder '\' working_folder
for file_path in full_path.iterdir():
file_name = file_path.name
result = file_name.count('_')
if file_path.is_file():
os.chdir(test_path)
for file in glob.glob("*.jpg"):
dst=test_path "\" file.replace(" ","_").replace(".jpg","") # .replace("Angle","").replace("Front","").replace("Side","")
os.mkdir(dst)
# print(dst)
shutil.move(file,dst)
elif result != 1:
if not file_path.is_file():
shutil.move(os.path.join(folder, working_folder, file_name), os.path.join(folder, working_folder ' - dir-ERRORS_' timestr, file_name))
else:
print('Ignored operation')
Ответ №1:
Вам нужно объяснить больше, чтобы мы могли лучше понять это, но из того, что я прочитал,
- Ваша логика «если» кажется неправильной, если вы хотите проверить количество подчеркиваний, вам не следует вводить эту логику
elif
. Вместо этого вам следует попробовать что-то подобное.
for file_path in full_path.iterdir():
file_name = file_path.name
result = file_name.count('_')
if os.path.isdir(file_path):
pass
else:
if result == 1:
os.chdir(test_path)
for file in glob.glob("*.jpg"):
dst=test_path "\" file.replace(" ","_").replace(".jpg","") # .replace("Angle","").replace("Front","").replace("Side","")
os.mkdir(dst)
# print(dst)
shutil.move(file,dst)
else:
shutil.move(os.path.join(folder, working_folder, file_name), os.path.join(folder, working_folder ' - dir-ERRORS_' timestr, file_name))
Что делает этот код, так это перебирает папку, и если он найдет папку, он просто пройдет, а когда найдет файл, он проверит, есть ли result == 1
. Если это так, он переместит его в нужную папку, в противном случае он переместит его в папку с ошибкой. Если я допустил ошибку, дай мне знать.