Форум сайта python.su
Доброго времени суток
Учебная задача: имеется папка с файлами, имена которых состоят из префикса, номера и расширения. Нужно написать программу, которая ищет эти файлы и “создаёт пропуск в нумерации” (этот момент я понял как удаление одного из пронумерованных файлов)
import os, re, random, send2trash path = 'D:\\Downloads\Python\\Learn\Automation of routine tasks\\Ch 9\\Educational project - Filling of gaps in file numbering\\Files' pref = input('Введите префикс: ') fileList = [] for folders, subfolders, files in os.walk(path): # Знаю, тут можно было обойтись циклом по os.listdir() for file in files: if file.startswith(pref): fileList.append(os.path.abspath(file)) delFile = random.choice(fileList) print(delFile) #send2trash.send2trash(delFile)
Офлайн
Решил проблему с помощью os.chdir() перед циклом по файлам:
import os, re, random, send2trash path = 'D:\\Downloads\Python\\Learn\Automation of routine tasks\\Ch 9\\Educational project - Filling of gaps in file numbering\\Files' pref = input('Введите префикс: ') fileList = [] os.chdir(path) for file in os.listdir(path): # Таки заменил цикл print(os.path.abspath(file)) if file.startswith(pref): fileList.append(os.path.abspath(file)) delFile = random.choice(fileList) print(delFile) send2trash.send2trash(delFile)
import os, send2trash path = 'D:\\Downloads\\Python\\Learn\\Automation of routine tasks\\Ch 9\\Educational project - Deleting unnecessuary files\\Catalog' for folder, subfolders, files in os.walk(path): os.chdir(folder) for file in files: if file.endswith('.jpg') and os.path.getsize(os.path.abspath(file)) > 500000: print('Будет удалён файл - ' + file) send2trash.send2trash(os.path.abspath(file))
Офлайн
for path, dirs, files in walk(root): for filename in files: if filename.startswith(pref): file_list.append(os.path.join(path, filename))
Отредактировано pyuser (Март 22, 2018 04:37:08)
Офлайн
pyuser, опробовал, спасибо
Офлайн