[英]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.