2012-06-20 6 views
4

Вот мой код, который я пытаюсь запустить на Mac OS X:Как избавиться от «IOError: 13„Разрешение отказано“» на Mac OS X

import getpass #Needed for fetching username 
import shutil #Needed for moving Files 
import os 
var_username = getpass.getuser() #gets username and returns as variable 
source_file = r"/Users/%s//Downloads/LogNLock/com.lognlock.loginhook.plist" %(var_username) #the destination of the source file 
destination = r"/Library/LaunchAgents" #the target destination for the file to go 
shutil.copy(source_file, destination) #moves the source file to the destination folder 

И Я googled вокруг и не может понять, почему это не сработает. Фоновая информация: она работает при перемещении файлов с рабочего стола на документы, например, но я думаю, что мне нужно как-то узнать, как привилегии пользователя root. im на учетной записи администратора сейчас.

+0

source_file = г "/ Users /% s // ..." <- 2 // 's Также строка интерполяции должна быть просто% var_username или% (var_username,) –

ответ

9

Разрешения для папки, которую вы пытаетесь скопировать в файл, недостаточно открыты для выполнения этой операции, поскольку пользователь, с которым вы работаете, выполняет скрипт. Это не проблема Python. Вам нужно либо предоставить права на запись пользователю в эту папку, либо вам нужно запустить скрипт как root.

Чтобы запустить скрипт как корень:

sudo python your_python_script.py 

Я считаю, что вам нужно быть пользователем Администратор для того, чтобы работать. 'sudo' - это команда, которая означает «делать это как суперпользователь».

Чтобы изменить права доступа к папке, вы можете попробовать

sudo chmod a+rw /path/to/folder/that/you/want/to/write/to 

Опять же, вы будете делать это как суперпользователь, CHMOD является командой, чтобы изменить права доступа к файлу или каталогу. «a + rw» переводит как «дает всем пользователям право на чтение/запись. Это может быть плохой идеей ... но похоже, что вы просто запускаете это локально на своей машине.

+0

Как бы я ни из тех, вещи? Я очень новый. – Simmrl