Итак, я работаю над скриптом, который будет проходить через множество файлов журналов, которые ищут строки и имена серверов.glob(), чтобы исключить подкаталоги
В моем тестировании я использовал glob()
, чтобы создать список файлов для троллинга.
Однако, чтобы улучшить мое тестирование, я скопировал каталог журналов из живой системы (11gb!) - и все не так гладко, как раньше ... похоже, что glob рассматривает подкаталоги в виде файлов, и поэтому readlines()
пытается их прочитать.
Мне не нужны файлы в подкаталогах, я просто хочу сканировать файлы в родном каталоге.
Я думаю, что я могу использовать os.walk()
для достижения этой цели, с чем-то вроде:
logs = next(os.walk('var/opt/server/log/current'))[2]
В противоположность:
logs = glob('/var/opt/server/log/current/*')
Потому что я учусь Python, я хочу, чтобы убедиться, что я узнаю все правильно. Так что я исправлю в том, что я говорю выше? Или я должен использовать glob()
несколько иначе, чтобы достичь этой цели?
Чем больше я поиграйте с ним, тем больше я понимаю, что 'следующий()' не является правильным инструментом для работы здесь, как это повысит 'StopIteration', когда он достигнет конца списка. Полагаю, я мог бы использовать 'try:' и 'except:' для 'StopIteration', но это кажется беспорядочным. Я прочитал, что 'for *()' будет автоматически, кроме 'StopIteration', так что, может быть, цикл for через список каталогов будет лучше? – jonnybinthemix