Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2017 18:51:13

sepoid
Зарегистрирован: 2016-07-24
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

И снова всем привет

Добрался уже до создания циклов и дублирования файлов в текущей директории. Написал небольшой код, код домашнее задание который выполняет разные действия. Очередное действие которое он должен выполнить, это про дублировать файлы из текущей директории.

 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)'

Помогите пожалуйста разобраться в чем дело.

P.S. Я так понимаю всё дело в том что для запуска кода нужны права администратора? Если да, то как именно нужно всё это дело запускать?

Офлайн

#2 Янв. 29, 2017 20:00:02

sepoid
Зарегистрирован: 2016-07-24
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

Буду очень признателен если кто-то отпишется.

Если что-то не ясно в вопросе, пишите, отвечу.

Спасибо за понимание.

Офлайн

#3 Янв. 29, 2017 21:11:32

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

os.listdir возвращает список файлов и папок, поэтому “Новая папка (2)” попадает в file_list, а затем вы пытаетесь применить к ней shutil.copy

Отредактировано aiscy (Янв. 29, 2017 21:18:18)

Офлайн

#4 Янв. 29, 2017 21:41:05

sepoid
Зарегистрирован: 2016-07-24
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:


Суть 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)

Офлайн

#5 Янв. 29, 2017 21:47:46

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

sepoid
Суть 4-го задания - Дублирование файлов в текущей директории
Ну так вы, судя по трейсу, пытаетесь не только файлы дублировать, но и папки. А папки через shutil.copy копировать нельзя, для них есть shutil.copytree.

shutil.copy(src, dst, *, follow_symlinks=True)

Copies the file src to the file or directory dst. src and dst should be strings. If dst specifies a directory, the file will be copied into dst using the base filename from src. Returns the path to the newly created file.

Офлайн

#6 Янв. 29, 2017 21:49:09

sepoid
Зарегистрирован: 2016-07-24
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

Ребята, спасибо за внимание, сам разобрался. Дело в том что первый раз *.py файл я сохранил на рабочем столе и там же пытался про дублировать все файлы. Видимо поэтому выскакивала ошибка

 PermissionError: [Errno 13] Permission denied: 'Новая папка (2)'

Решил переставить файл с кодом в отдельную папку где храню другие свои *.py файлы. Теперь всё работает.

Всем спасибо.

Офлайн

#7 Янв. 29, 2017 21:50:35

sepoid
Зарегистрирован: 2016-07-24
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

aiscy
Спасибо за ответ, а думал это из-за того что я пытался дублировать файлы на рабочем столе. Про shutil.copytree не знал. Спасибо за ответ.

Офлайн

#8 Янв. 29, 2017 21:53:56

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:

Пожалуйста. Для проверки, а файл ли это, можете воспользоваться https://docs.python.org/3/library/os.path.html#os.path.isfile

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version