首页 > 解决方案 > 在创建备份时从 Python 中的多个文件中删除字符串

问题描述

我需要从 Python 中的多个 .txt 文件中删除字符串“HELLO”。在此之前,我想将所有这些文件复制到备份文件夹中。

我在 drc 文件夹中有我的文件,并创建了一个备份文件夹,但我的代码没有将副本保存到 Backup 文件夹,而是将它们保存到主 Project 文件夹。

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] Permission denied: './Backup'。我认为我的问题是指定路径,我也希望我的路径是相对的,而不是绝对的,以便其他人可以复制这个项目。

标签: pythondirectorypath

解决方案


backup变量正在尝试写入 Python 工作目录的父级,而不是您在顶部指定的目录。

这条线backup = './Backup'覆盖了这一点。从未使用最高定义。

您可以删除第二个定义,或使用dirname(path)来确定父目录并从那里开始工作。


推荐阅读