Форум сайта python.su
И снова всем привет
Добрался уже до создания циклов и дублирования файлов в текущей директории. Написал небольшой код, код домашнее задание который выполняет разные действия. Очередное действие которое он должен выполнить, это про дублировать файлы из текущей директории.
import os import sys import psutil import shutil print('PC Scanner') name = input('Назовите свое имя: ') print("Добро пожаловать в компьютерный сканнер," ,name) answer = '' while answer != 'q': answer = input("Желаете чтобы я выполнял ваши задания? (Y/N/q)") if answer == 'Y': print("Я этому очень рад хозяин!") print("Вот что я умею на данный момент:") print(" [1] - выведу список файлов") print(" [2] - выведу информацию о системе") print(" [3] - выведу список процессов") print(" [4] - продублирую список файлов в текущей директории") do = int(input("Укажите какое действие выполнить")) if do == 1: print(os.listdir()) elif do == 2: print("Вот что я знаю о системе:") print("Количество процессоров: ", psutil.cpu_count()) print("Платформа: ", sys.platform) print("Кодировка файловой системы: ", sys.getfilesystemencoding()) print("Текущая директория: ", os.getcwd()) print("Текущий пользователь: ", os.getlogin()) elif do == 3: print(psutil.pids()) elif do == 4: print("Дублирование файлов в текущей директории") file_list = os.listdir() i = 0 while i < len(file_list): newfile = file_list[i] + '.dupl' shutil.copy(file_list[i], newfile) # копируй i += 1 else: pass # type, dir, help elif answer == 'N': print("Good Bye!") else: print("Unknown command")
Traceback (most recent call last): File "C:\Users\BaDi\Desktop\pc_robot.py", line 40, in <module> shutil.copy(file_list[i], newfile) # копируй File "C:\Users\BaDi\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 235, in copy copyfile(src, dst, follow_symlinks=follow_symlinks) File "C:\Users\BaDi\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 114, in copyfile with open(src, 'rb') as fsrc: PermissionError: [Errno 13] Permission denied: 'Новая папка (2)'
Офлайн
Буду очень признателен если кто-то отпишется.
Если что-то не ясно в вопросе, пишите, отвечу.
Спасибо за понимание.
Офлайн
os.listdir возвращает список файлов и папок, поэтому “Новая папка (2)” попадает в file_list, а затем вы пытаетесь применить к ней shutil.copy
Отредактировано aiscy (Янв. 29, 2017 21:18:18)
Офлайн
Суть 4-го задания - Дублирование файлов в текущей директории с добавлением к имени файла приставки .dupl
print("Дублирование файлов в текущей директории") file_list = os.listdir() i = 0 while i < len(file_list): newfile = file_list[i] + '.dupl' shutil.copy(file_list[i], newfile) # копируй i += 1
Отредактировано sepoid (Янв. 29, 2017 21:41:45)
Офлайн
sepoidНу так вы, судя по трейсу, пытаетесь не только файлы дублировать, но и папки. А папки через shutil.copy копировать нельзя, для них есть shutil.copytree.
Суть 4-го задания - Дублирование файлов в текущей директории
Офлайн
Ребята, спасибо за внимание, сам разобрался. Дело в том что первый раз *.py файл я сохранил на рабочем столе и там же пытался про дублировать все файлы. Видимо поэтому выскакивала ошибка
PermissionError: [Errno 13] Permission denied: 'Новая папка (2)'
Офлайн
aiscyСпасибо за ответ, а думал это из-за того что я пытался дублировать файлы на рабочем столе. Про shutil.copytree не знал. Спасибо за ответ.
Офлайн
Пожалуйста. Для проверки, а файл ли это, можете воспользоваться https://docs.python.org/3/library/os.path.html#os.path.isfile
Офлайн