Найти - Пользователи
Полная версия: Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:
Начало » Python для новичков » Новая программа - новая ошибка : PermissionError: [Errno 13] Permission denied:
1
sepoid
И снова всем привет

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

 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. Я так понимаю всё дело в том что для запуска кода нужны права администратора? Если да, то как именно нужно всё это дело запускать?
sepoid
Буду очень признателен если кто-то отпишется.

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

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

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

Вроде всё сделал как надо.
aiscy
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.
sepoid
Ребята, спасибо за внимание, сам разобрался. Дело в том что первый раз *.py файл я сохранил на рабочем столе и там же пытался про дублировать все файлы. Видимо поэтому выскакивала ошибка
 PermissionError: [Errno 13] Permission denied: 'Новая папка (2)'

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

Всем спасибо.
sepoid
aiscy
Спасибо за ответ, а думал это из-за того что я пытался дублировать файлы на рабочем столе. Про shutil.copytree не знал. Спасибо за ответ.
aiscy
Пожалуйста. Для проверки, а файл ли это, можете воспользоваться https://docs.python.org/3/library/os.path.html#os.path.isfile
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB