簡體   English   中英

重命名Python存在的文件

[英]Renaming Files That Exist With Python

所以我覺得我可能在Google / StackOverflow上使用錯誤的單詞來查找代碼。

我正在構建一個腳本(其中包括)將會執行大量移動文件。

我目前有一個小行來從擴展名中分割文件名,如果文件已經存在於目錄中,則添加文件名+(重復)+擴展名。

但是,我覺得有一個簡單的小單行將基本上做(復制),(復制1),(復制2),(復制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))

(這可能基本上就是你所做的,但你沒有發布你的代碼。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM