2016-01-04 4 views
0

Хотите скопировать файлы в другой каталог.FileNotFoundError: при создании нового файла

Поскольку файлы копируются довольно хорошо, но когда программа встречает папки выбирающий ошибку:

Traceback (most recent call last): 
    File "C:/Users/kemburaj.kemburaj-PC/Desktop/backup.py", line 16, in <module> 
    fhand = open(file,'wb') 
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\kemburaj.kemburaj-PC\\Documents\\backup\\a\\Appointment Reciept.pdf' 

Мой код:

import os 

for dirname, dirs, filename in os.walk("."): 
    for file in filename: 
     thefile = os.path.join(dirname,file) 
     source = open(thefile,'rb') 
     data = source.read() 
     source.close() 
     Newpath = "C:\\Users\kemburaj.kemburaj-PC\Documents\\backup\\" #paste the backup directory path, please check escape characters 
     if not os.path.exists(Newpath): 
      os.makedirs(Newpath) 
     file = os.path.join(Newpath,thefile[2:]) #copy this py file in the directory which is to be backed up 
     print(file) 
     fhand = open(file,'wb') 
     fhand.write(data) 
     fhand.close() 
     print("\n\nBackup >",file) 
+0

'файл' - это зарезервированное встроенное имя символа, попробуйте использовать другое имя для своих переменных. – toti08

+0

Пробовал, fhand = open (newfile, 'wb') Но все же показывает ошибку. –

+0

'C: \ Users \ kemburaj.kemburaj-PC \ Documents \ backup \ a' отличается от' C: \ Users \ kemburaj.kemburaj-PC \ Documents \ backup'. –

ответ

2

Используйте shutil.copytree() вместо этого. Нечто вроде:

shutil.copytree('.', Newpath) 

сделаю.

+0

Спасибо! это сработало ! –

1

выглядит следующим образом:

file = os.path.join(Newpath,thefile[2:]) 

Возвращает путь, который включает в себя имя подкаталога a, которое вы еще не создали.

Это путь, который возвращается как проблематичное в вашем StackTrace:

C:\Users\kemburaj.kemburaj-PC\Documents\backup\a\Appointment Reciept.pdf 
+0

да, но создание каталога также выполняется с использованием, если не os.path.exists (Newpath): os.makedirs (Newpath) –

Смежные вопросы