Estou procurando uma função que possa lidar com casos em que o caminho do arquivo de entrada já contém um sufixo numérico entre parênteses. A implementação atual da minha get_unique_path
função incrementa o sufixo numérico em um até encontrar um caminho que não existe. No entanto, essa abordagem falha quando o caminho do arquivo de entrada já contém um sufixo numérico.
Por exemplo, se o caminho do arquivo de entrada for example(1).txt
, a função anexará incorretamente outro conjunto de parênteses e um número, resultando em example(1)(2).txt
. Em vez disso, quero que a função verifique o caminho base para parênteses existentes e incremente o sufixo numérico de acordo.
Aqui está minha implementação atual:
def get_unique_path(file_path: str, extension: str) -> Optional[str]:
base_path = os.path.splitext(file_path)[0]
attempt = 1
while True:
path = f"{base_path}({attempt + 1}).{extension}"
if not os.path.exists(path):
return path
attempt += 1
Gostaria de modificar esta função para lidar com casos em que o caminho do arquivo de entrada já contém um sufixo numérico entre parênteses. Alguém pode sugerir uma solução?
O primeiro passo óbvio é verificar se o
file_path
já contém um número entre parênteses e removê-lo se tiver. Podemos usar ore
módulo para executar essa operação.Uma implementação possível é:
Aqui estão alguns testes simples:
Para lidar com casos em que o caminho do arquivo de entrada já contém um sufixo numérico entre parênteses, você pode usar expressões regulares para extrair o caminho base e o sufixo numérico.
Use
re.search(r'(.*)\((\d+)\)(\.[^.]+)$', file_path)
para corresponder ao caminho do arquivo de entrada. Em seguida, incremente o sufixo numérico e construa o novo caminho. Se nenhuma correspondência for encontrada, use a lógica original para anexar um sufixo numérico e incrementá-lo até que um caminho que não existe seja encontrado.