2016-09-21 73 views
0

我想要一個腳本來重命名爲它作爲電子郵件發送的日期(這是腳本的第一部分,但這部分無關緊要)然後重命名,並將其分類到「完整」文件夾中。這是我的代碼看起來像os.rename返回winerror 2

編輯 - 我所有的進口的東西一路在頂部和我沒有表現出來,但是我想我有本事進口的,如果你想看到的只是問

dir5 = "C:\\Users\\Michael D\\Documents\\Test\\AmLit" 
dir6 = "C:\\Users\\Michael D\\Documents\\Test\\History" 
dir7 = "C:\\Users\\Michael D\\Documents\\Test\\MultiLit" 
dir8 = "C:\\Users\\Michael D\\Documents\\Test\\Physics" 
dir5_final = "C:\\Users\\Michael D\\Documents\\TestMove\\AmLit" 
dir6_final = "C:\\Users\\Michael D\\Documents\\TestMove\\History" 
dir7_final = "C:\\Users\\Michael D\\Documents\\TestMove\\MultiLit" 
dir8_final = "C:\\Users\\Michael D\\Documents\\TestMove\\Physics" 


now = datetime.datetime.now() 
now1 = (str(now.day) + '/' + str(now.month) + '/' + str(now.year)) 

dir5_files = os.listdir(dir5) 
dir6_files = os.listdir(dir6) 
dir7_files = os.listdir(dir7) 
dir8_files = os.listdir(dir8) 

for f in dir5_files: 
    if (f.startswith("A") or f.startswith("a")): 
     os.rename(f, now1 + " " + f) 

,但我不斷收到此錯誤

RESTART: C:/Users/Michael D/Documents/Coding/Schoolwork Email/Email Sender Beta 1.7.21.9.16.py 
Traceback (most recent call last): 
    File "C:/Users/Michael D/Documents/Coding/Schoolwork Email/Email Sender Beta 1.7.21.9.16.py", line 148, in <module> 
    os.rename(f, now1 + " " + f) 
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'A Test.txt' -> '21/9/2016 A Test.txt' 

任何想法,以什麼我做錯了嗎?

+0

你沒有從'os.listdir()'得到完整的路徑,要麼改變工作目錄,要麼給'rename()'的完整路徑。 –

回答

1

2個錯誤:

  1. 你是不是在當前目錄

  2. 你就不能在名稱斜線。文件系統不會允許它(或者)用於分隔路徑部分。

首先,直接用下劃線生成日期:

now1 = (str(now.day) + '_' + str(now.month) + '_' + str(now.year)) 

然後更換

os.rename(f, now1 + " " + f) 

通過

os.rename(os.path.join(dir5,f), os.path.join(dir5,now1.replace("/","_") + " " + f)) 

A Test.txt將被重新命名爲21_9_2016 A Test.txt在您指定的目錄中。

+0

仍然返回相同的錯誤 – Kiwi0

+0

看到我的編輯。問題與當前目錄加斜槓 –

+0

他還需要使用'os.path.join'將目錄前綴添加到文件名。 – Barmar