2016-09-21 75 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