Найти - Пользователи
Полная версия: Неверный путь к файлу
Начало » Центр помощи » Неверный путь к файлу
1
Ethex
Доброго времени суток
Учебная задача: имеется папка с файлами, имена которых состоят из префикса, номера и расширения. Нужно написать программу, которая ищет эти файлы и “создаёт пропуск в нумерации” (этот момент я понял как удаление одного из пронумерованных файлов)
 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)
С помощью print(delFile) я вижу, что в списке элементы следующего вида:
D:\Downloads\Python\Learn\Automation of routine tasks\Ch 9\Educational project - Filling of gaps in file numbering\spam020.txt
Однако, в заданном пути ещё имеется каталог Files. Почему же тогда он отсутствует в элементах списка?
Ethex
Решил проблему с помощью 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)
А вот уже другой учебный проект с использованием os.walk(), где помогло аналогичное решение:
 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))
pyuser
 for path, dirs, files in walk(root):
    for filename in files:
        if filename.startswith(pref):
            file_list.append(os.path.join(path, filename))
Ethex
pyuser, опробовал, спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB