我有一個python工具來'觸摸'(utime)一個文件,然後移動到另一個文件夾。但是,如果該文件已存在於目標文件夾中,則會被無提示地覆蓋。我想檢查一個目標文件夾中的同名文件,如果存在,請將其重命名爲我的名字加'n'結尾,其中n是一個開頭的數字在'1'處,並且如果在末尾具有'-1'的文件已經存在,則'-2'等。
例如,假設在源文件夾中是文件'foo.txt',但是存在' foo.txt'也在目標文件夾中。這個函數應該返回'(絕對路徑)/ foo -1 .txt'。python函數不重複
所以,我已經做了一個函數來檢查這些情況並返回修改的字符串,所以我可以稍後使用重命名而不是覆蓋。但是,目前,如果文件存在,它不會返回任何內容。以下是功能代碼,假設這些變量:
fileName - 輸入文件路徑,絕對路徑。例如/Users/foo/sourceFolder/bar.txt
索引 - 迭代變量,在每個文件的開始設置爲「1」被打開(外部給功能)
def checkExists(fileName):
global index
print "checkExists(" + fileName + ")"
if exists(fileName):
splitPath = split(newFile)
splitName = splitext(splitPath[1])
newSplitName = splitName[0] + "-" + str(index)
index += 1
newName = splitPath[0] + "/" + newSplitName + splitName[1]
print "newName = " + newName
else:
print "(else) fileName = " + fileName
print "(else) fileName = " + str(type(fileName))
print ""
return fileName
checkExists(newName)
目前看來,所述內呼叫checkExists()最後沒有運行。
我希望我的解釋清楚。
IAmThePiGuy
P.S.我不想聽到有關使用時間的潛在競爭問題,我知道源目錄中的文件不會被其他任何內容訪問。
檢查您的壓痕。 – 2011-04-16 02:01:42