Найти - Пользователи
Полная версия: Работа с файлами
Начало » Python для новичков » Работа с файлами
1
SomethingButNotNickName
Добрый день.
Для автоматизации некоторых действий пишу простенькие скрипты на питон. Общая логика такая:
1) Получить список папок;
2) Пройти циклом по списку папок заглядывая в каждую папку
3) Получить список файлов внутри папки;
4) Пройти циклом по списку файлов выполняя требуемые действия.
Получение списков убрано в функцию.
Периодически возникают ошибки FileNotFoundError: . Т.е. я написал скрипт, перебор файлов в нем работает, но есть ошибка во время выполнения целевого действия (пункт 4 в схеме выше). Я начитаю править алгоритм этого действия и внезапно собираю ошибки. FileNotFoundError: . Потом еще какое-то количество правок ОПЯТЬ же главного действия и ошибки FileNotFoundError: исчезают. Часть кода, отвечающую за перебор файлов я не трогал уже хрен знает сколько времени. Собственно код.
 import json
import os
import string
from mp3_tagger import VERSION_2, MP3File
def func_list_mp3_files():
    return [f for f in os.listdir('.') if os.path.isfile('.' + '\\' + f)
            and f.endswith('.mp3')]
def func_list_dirs():
    return [f for f in os.listdir('.') if os.path.isdir('.' + '\\' + f)]
def func_main():
    for folder in func_list_dirs():
        os.chdir(os.path.join('.', folder))
        for file in func_list_mp3_files():
            try:
                some code
            except Exception as error:
                print (error)
        os.chdir('..')

Может ли это быть связано с “занятостью” папок/файлов сторонними процессами windows? И если может как запретить Windows лезть туда?
spikejke
Добрый вечер , для Ваших целей не подходит os.walk ?
 import os
path = "c:\\python"
for root, dirs, files in os.walk(path):
    pass # Тут Ваш обработчик 
py.user.next
SomethingButNotNickName
и внезапно собираю ошибки. FileNotFoundError
В таких случаях нужно на экран выводить директории, в которых ты ищешь файл, чтобы убедиться, что всё правильно. Чаще всего вывод окажется совсем не тем, что ты ожидаешь в воображении.

Скорее всего, что-то в “some code”.

Зачем ты делаешь имена в форме .\name ? Это не добавляет ничего, все эти join'ы можно убрать.
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