#python #directory #path
#python #каталог #путь
Вопрос:
Мне нужно удалить строку ‘HELLO’ из нескольких файлов .txt в Python. Перед этим я хочу скопировать все эти файлы в папку резервного копирования.
У меня есть мои файлы в папке drc, и я создал резервную папку, но мой код не сохраняет копии в папку резервного копирования, вместо этого он сохраняет их в основную папку проекта.
drc = 'C:/Users/Bear/Desktop/Project/Files'
backup = 'C:/Users/Bear/Desktop/Project/Backup'
pattern = re.compile('HELLO')
oldstr = 'HELLO'
newstr = ''
for dirpath, dirname, filename in os.walk(drc):
for fname in filename:
path = os.path.join(dirpath, fname)
backup = './Backup'
strg = open(path).read()
if re.search(pattern, strg):
shutil.copy2(backup, fname)
strg = strg.replace(oldstr, newstr)
f = open(path, 'w')
f.write(strg)
f.close()
Иногда я получаю PermissionError: [Errno13] Отказано в разрешении: ‘./Backup’.
Я думаю, что моя проблема заключается в указании путей, также я хотел бы, чтобы мои пути были относительными, а не абсолютными, чтобы кто-то другой мог воспроизвести этот проект.
Ответ №1:
backup
Переменная пытается выполнить запись в родительский рабочий каталог Python, а не в каталог, указанный вами вверху.
Строка backup = './Backup'
переопределяет это. Определение top никогда не используется.
Вы можете стереть второе определение или использовать dirname(path)
для определения родительского каталога и работать оттуда.
Комментарии:
1. Спасибо. Я сделал это, но я получаю PermissionError: [Ошибка № 13] Отказано в разрешении для папки (резервной копии), к которой у меня, очевидно, есть доступ…
2. Какое значение, по словам вашего отладчика
backup
, находится в точке, где вы получаете эту ошибку?