Вставить строку во все файлы в директории и поддиректориях

Нужно вставить во все файлы с расширением .php в директории и в поддиректориях <?php print_r(get_included_files()); Пробовал:

import os, re
from pathlib import Path

directory = ("/opt/lampp/htdocs/Joomla390")

for x in directory.rglob('*.php'):
    directory.write('<? print_r(get_included_files());')
    print(directory)

Но мимо. Как можно такое провернуть на Python?


Ответы (1 шт):

Автор решения: insolor
  1. directory у вас просто строка, у строки нет метода rglob. Чтобы работало, directory должно быть объектом Path:

    directory = Path("/opt/lampp/htdocs/Joomla390")
    
  2. В цикле вы пытаетесь писать в directory, а нужно писать в файл, путь к которому попадает в переменную x. Нужно проверить что x у вас файл (вдруг у вас там окажется директория с именем заканчивающимся на .php?), открыть этот файл, записать туда строку.

from pathlib import Path

directory = Path("/opt/lampp/htdocs/Joomla390")

for path in directory.rglob('*.php'):
    if path.is_file():
        print(path.name)
        with open(path, 'a') as file:
            file.write('<? print_r(get_included_files());')

Параметр 'a' в open означает, что файл будет открыт в режиме добавления данных, строка будет добавлена в конец файла.

→ Ссылка