Substituição atômica de arquivos UTF-8
Substitua um arquivo UTF-8 por meio de um temporário no mesmo diretório.
import os
from pathlib import Path
from tempfile import NamedTemporaryFile
def replace_utf8(path, text):
if not isinstance(path, (str, Path)) or type(text) is not str:
raise ValueError("replace.input")
target, data = Path(path), text.encode("utf-8")
temporary = None
try:
with NamedTemporaryFile(dir=target.parent, prefix=".swap-", delete=False) as out:
temporary = Path(out.name)
out.write(data)
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Revise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Modelos
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
Projeto
Teste texto vazio, Unicode e falha na substituição, fechando o temporário antes da troca e removendo sobras sem alterar o arquivo anterior nessa falha.
import os
from pathlib import Path
from tempfile import NamedTemporaryFile
def replace_utf8(path, text):
if not isinstance(path, (str, Path)) or type(text) is not str:
raise ValueError("replace.input")
target, data = Path(path), text.encode("utf-8")
temporary = None
try:
with NamedTemporaryFile(dir=target.parent, prefix=".swap-", delete=False) as out:
temporary = Path(out.name)
out.write(data)
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Revise o que permanece quando uma atualização de arquivo falha
Replacent é um ambiente de programação para Windows que permite usar um modelo de IA para analisar alterações que afetam arquivos em disco. Comece pelo código do projeto e explique o que deve permanecer se uma atualização não puder ser concluída. Peça ao assistente que examine preparação, gravação, substituição e limpeza como uma operação integrada. O objetivo é obter uma proposta cujo comportamento em caso de falha você consiga descrever antes de testá-la em dados úteis.
O exemplo replace_utf8.py apresenta uma tarefa que envolve um arquivo temporário e a substituição do destino. Você pode pedir ao assistente que revise quando a codificação ocorre, onde a saída temporária é colocada e qual limpeza é executada após uma exceção. Examine o código real e o ambiente de destino em vez de presumir que uma única chamada de substituição assegura todas as propriedades de durabilidade de que sua aplicação pode precisar.
Teste a operação revisada em um diretório descartável, verificando o conteúdo do destino e os arquivos restantes tanto após o sucesso quanto após falhas controladas. Mantenha as observações na conversa para que novas edições tratem do comportamento demonstrado. Replacent aceita conexões suportadas compatíveis com OpenAI ou da Anthropic, com credenciais conforme necessário. Se houver um modelo sem filtros disponível nessa conexão, você poderá escolhê-lo para a discussão; limites de contexto, ferramentas e restrições das respostas ainda dependem do modelo e do servidor. As verificações do projeto continuam sendo a evidência do cumprimento do contrato de atualização de arquivos.
Perguntas sobre substituição e limpeza
- O que uma solicitação de atualização de arquivo deve especificar?
Descreva o conteúdo esperado do destino após o sucesso, o que deve permanecer após uma falha e se arquivos existentes podem ser substituídos. Inclua o ambiente de destino e o requisito de codificação para que a proposta possa ser verificada em relação a pós-condições concretas.
- Substituição é o mesmo que armazenamento durável?
Não presuma que sim. Os requisitos de durabilidade dependem da implementação completa e do ambiente. Se a preservação dos dados após uma queda for importante, declare isso separadamente e revise o comportamento pertinente, em vez de deduzi-lo de um padrão com arquivo temporário.
- Como posso examinar o comportamento de limpeza?
Use arquivos descartáveis e casos de falha controlada adequados ao projeto. Depois, verifique tanto o destino original quanto qualquer saída temporária. Leia também o fluxo de exceção, pois uma execução bem-sucedida não exercita a limpeza após uma operação interrompida.
- Erros de limpeza devem ocultar a falha original?
Defina o comportamento de comunicação de erros de que o código chamador precisa. Examine se a limpeza pode gerar outra exceção e ocultar o problema inicial; depois, teste esse fluxo quando for viável, antes de aceitar uma revisão da operação.
Replacent · Atualizado 2026-10-25