Python重命名TXT文件遇PermissionError:文件被占用无法修改
解决重命名文件时的PermissionError问题
错误原因
你碰到的PermissionError: [WinError 32]是因为文件还被当前代码的打开进程占用——代码里用with open(arquivo, "a+")打开文件后,在with代码块内直接执行os.rename,此时文件处于未关闭状态,系统不允许修改它的文件名。
另外代码还有两个小问题:
os.listdir只返回文件名,没有完整路径,如果你的Python脚本不在C:\Users\{id}\OneDrive\Onedrive - GPA目录下,会找不到要操作的文件- 代码末尾有一行重复的
caminho_remuneracao = os.listdir(...),属于冗余代码,需要删掉
修正后的代码
import os from datetime import date id = 4577809 data_hoje = date.today().strftime('%Y%m%d') data = date.today().strftime('%d%m%Y') # 定义目标文件夹的完整路径 pasta_alvo = f"C:\\Users\\{id}\\OneDrive\\Onedrive - GPA" caminho_remuneracao = os.listdir(pasta_alvo) for arquivo in caminho_remuneracao: if 'GPARH_0030' in arquivo and data in arquivo: # 拼接文件的完整路径 caminho_completo = os.path.join(pasta_alvo, arquivo) # 先读取文件内容,读完自动关闭 with open(caminho_completo, "r") as arq: linhas = arq.readline() linha = linhas[5:19] # 文件关闭后再执行重命名 novo_nome = f'GPA_PEDD_{linha}_{data}.txt' # 建议加上文件后缀,避免丢失格式 novo_caminho = os.path.join(pasta_alvo, novo_nome) os.rename(caminho_completo, novo_caminho) print(f'arquivo {arquivo} renomeado para {novo_nome}')
额外说明
- 把打开模式从
a+改成r,因为你只需要读取文件首行,不需要追加内容,r模式更安全 - 手动拼接完整路径,避免因工作目录不一致导致的文件找不到问题
- 建议给新文件名加上
.txt后缀,防止重命名后丢失文件格式
内容的提问来源于stack exchange,提问作者FireWolfBR
相关产品推荐
相关产品推荐

