Я выполнил поиск сценариев Python в некоторых подпапках, используя os.walk()
и endswith(file.py)
, и поместил их в список. Сейчас пытаюсь их выполнить. Итак, у меня есть список типа:
pylist = ['./1/file1.py', './2/file2.py', ...]
и я попытался выполнить их с помощью цикла for:
for i in range(len(pylist)):
%run pylist[i]
а также (я использую блокнот jupyter)
for i in range(len(pylist)):
!python pylist[i]
но в обоих случаях он не находит файл pylist[i].py
, поэтому не берет содержимое списка. я тоже пробовал
for i in range(len(pylist)):
execfile(pylist[i])
но это дает мне
indexError: индекс списка вне допустимого диапазона
с одним из файлов python, который я не получу, если перейду прямо в папку и выполню файл. Еще один тест использовал subprocess
, для которого я получил ошибку разрешения:
OSError: [Errno 13] Отказано в доступе
я подозреваю, что это может быть связано с тем, что файлы .py не имеют прав на выполнение. Но тогда сделать каждый файл исполняемым — это еще одна проблема.
Каков правильный способ выполнения файлов Python в списке?
Изменить: более конкретно
При переходе в определенный каталог на моем ноутбуке Jupyter и выполнении файла как
!python file1.py
он отлично работает, но при использовании списка я получаю
for fname in pylist:
!python fname
python: не удается открыть файл «fname»: [Errno 2] Нет такого файла или каталога
поэтому кажется, что python не читает элементы в списке, а пытается выполнить fname
. Я проверил с помощью os.path.abspath(fname)
правильность путей.