2016-06-11 50 views
0

我需要一個腳本將大於5mb的所有文件從給定文件夾複製到腳本需要在桌面上創建的新文件夾。然後它需要以遞增的順序重命名所有文件,並改變擴展名。 例如文件:slides.ppt,math.doc,essay.docx 到:lec1.doc,lec2.doc,lec3.docpython複製大於x的所有文件,然後重命名所有新文件

我得到這個腳本工作,它列出超過5MB的所有文件:

import os 

# The directory that we are interested in 
myPath = "C:\asd" 

# The min size of the file in Bytes 
mySize = '5000000' 

# All the file paths will be stored in this list 
filesList= [] 

for path, subdirs, files in os.walk(myPath): 
    for name in files: 
     filesList.append(os.path.join(path, name)) 

for i in filesList: 
    # Getting the size in a variable 
    fileSize = os.path.getsize(str(i)) 

    # Print the files that meet the condition 
    if int(fileSize) >= int(mySize): 
     print("The File: " + str(i) + " is: " + str(fileSize) + " Bytes") 

現在這打印出列表和列表是正確的,但我怎麼能從這裏? 我看着os和glob,但我很難想象這一點。

謝謝你們的幫助。

達尼

+0

從一個簡單的例子開始,在腳本之外。例如嘗試'glob.glob('/ path/to/files/*。doc')'看看你得到了什麼。在python文檔中搜索重命名,至少有兩種方法可以做到這一點(os和pathlib都提供重命名功能)。 – miraculixx

回答

0

嘗試shutil包。它處理高級文件操作

import shutil 
#do something 
shutil.move(source,destination) 

其中源和目標可能是文件或文件夾。
只需將目標設置爲文件的最終名稱,而不是複製,然後重命名。

+0

正如我評論@Luca我得到它與shutil工作,並在新目錄中的一切,但現在我無法得到os.rename工作..張貼錯誤和代碼上面 – DanyBoy

+0

對不起。你有什麼嘗試? – SvbZ3r0

+0

問題是我在os.rename中只使用了文件名,但我需要包含完整路徑。問題解決了!多謝你們! – DanyBoy

0

您可以從os

import os 
os.rename(src, dst) 

其中src是原始文件或目錄名和dst是新的名稱使用rename方法。

+0

好的我得到我的腳本工作它將我的所有文件複製到新目錄'destPath =「C:/ Users/dquerzola/Desktop/scuola」'但現在從這裏我不能做更名 – DanyBoy

+0

'n = 1 文件名= os.listdir(destPath) 爲文件名的文件名: os.rename(文件名, 'lezione' + STR(N)+」的docx。 ')' – DanyBoy

+0

異常 「未處理FileNotFoundError」 [WinError 2] Impossibile trovare IL文件說明:'reg32.dll' - >'lezione1.docx' 文件:C:\ Users \ dquerzola \ Desktop \ doc \ pyth \ scripts \ list.py,行數:33英文表示:不可能找到指定文件 – DanyBoy

相關問題