我正在寻找一个可以处理输入文件路径已包含括号中的数字后缀的情况的函数。我get_unique_path
函数的当前实现将数字后缀加一,直到找到不存在的路径。但是,当输入文件路径已包含数字后缀时,这种方法会失败。
例如,如果输入文件路径为example(1).txt
,则该函数将错误地附加另一组括号和一个数字,导致example(1)(2).txt
。相反,我希望该函数检查基本路径中是否存在括号,并相应地增加数字后缀。
这是我当前的实现:
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
我想修改此函数以处理输入文件路径已包含括号中的数字后缀的情况。有人能提出解决方案吗?
显然,第一步是检查
file_path
括号中是否已经包含数字,如果包含,则删除它。我们可以使用该re
模块执行该操作。一种可能的实现是:
以下是一些简单的测试:
为了处理输入文件路径已包含括号中的数字后缀的情况,可以使用正则表达式来提取基本路径和数字后缀。
用于
re.search(r'(.*)\((\d+)\)(\.[^.]+)$', file_path)
匹配输入文件路径。然后,增加数字后缀并构造新路径。如果未找到匹配项,则使用原始逻辑附加数字后缀并增加它,直到找到不存在的路径。