gpt4 book ai didi

python - 重命名存在于 Python 中的文件

转载 作者:行者123 更新时间:2023-11-28 22:03:02 28 4
gpt4 key购买 nike

所以我觉得我可能使用了错误的词来在 Google/StackOverflow 上四处寻找代码。

我正在构建一个脚本(除其他外)将执行大量移动文件。

我目前有一小行用于将文件名与扩展名分开,如果文件已存在于目录中,则添加文件名+(重复)+扩展名。

但是,我觉得必须有一个简单的小单行,它基本上可以执行 (Duplicate)、(Duplicate 1)、(Duplicate 2)、(Duplicate 3) 等操作(基本上只是更改第二个数字如果文件与当前文件一起存在,则转到下一个数字)。

有什么简单的解决方案,我太笨了,无法弄清楚自己?

抱歉,我没有想到我当前的代码可能会帮助人们回答我的问题!

def destination(self, f): return os.path.abspath('.')+'/'+self.filename(f)+'/'+self.filename(f)+' (Duplicate)'+self.extension(f) if and os.path.isfile(os.path.abspath('.')+'/'+self.filename(f)+'/'+f) else os.path.abspath('.')+'/'+self.filename(f)+'/'+f

我使用了一种稍微改变的方法来获取文件名和扩展名(基本上只是为了解决一些 rar 部分和一些文件夹问题)。但是 'self.filename(f) 和 self.extension(f) 基本上只是 os.splittext(f)[0] 和 os.splittext(f)[1]。

最佳答案

当然, 有一些代码可以做到这一点,但我想不出一个可读性很强的代码。我会选择这样的东西:

def alternative_names(filename):
yield filename
base, ext = os.path.splitext(filename)
yield base + "(Duplicate)" + ext
for i in itertools.count(1):
yield base + "(Duplicate %i)" % i + ext

target_name = next(alt_name
for alt_name in alternative_names(target_name)
if not os.path.exists(alt_name))

(这可能基本上就是您所做的,但您没有发布代码。)

关于python - 重命名存在于 Python 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com