Разрешение отклонено при записи в файл в Python

Я хочу создать файл и записать в него целочисленные данные в python. Например, у меня есть переменная abc = 3, и я пытаюсь записать ее в файл (который не существует, и я полагаю, что python создаст его самостоятельно):

fout = open("newfile.dat", "w")
fout.write(abc)

Во-первых, будет ли python создавать newfile.dat самостоятельно? Во-вторых, это дает мне эту ошибку:

IOError: [Errno 13] Permission denied: 'newfile.dat'

Что здесь не так?

Ответ 1

Это также происходит при попытке создать файл с тем же именем, что и каталог:

import os

conflict = 'conflict'

# Create a directory with a given name
try: 
    os.makedirs(conflict)
except OSError:
    if not os.path.isdir(conflict):
        raise

# Attempt to create a file with the same name
file = open(conflict, 'w+')

Результат:

IOError: [Errno 13] Permission denied: 'conflict'

Ответ 2

Закройте файл, если он все еще открыт на вашем компьютере, а затем попробуйте запустить код python. Я надеюсь, что это работает.

Ответ 3

Чтобы ответить на ваш первый вопрос: да, если файл не существует, Python его создаст.

Во-вторых, пользователь (самостоятельно), на котором запущен python script, не имеет прав записи для создания файла в каталоге.

Ответ 4

У меня была такая же проблема с использованием cmd (командной строки Windows), как это

C:\Windows\System32> "G:\my folder\myProgram.py"

Где внутри файла Python что-то вроде этого

myfile = open('myOutput.txt', 'w')

Ошибка состояла в том, что когда вы не используете полный путь, python будет использовать ваш текущий каталог, и потому что каталог по умолчанию на cmd

C:\Windows\System32 

это не сработает, так как оно защищено от записи и требует разрешения и подтверждения от администратора

Вместо этого вы должны использовать полные пути, например:

myfile = open('G:\my folder\myOutput.txt', 'w')

Ответ 5

Если вы выполняете скрипт python через терминал, передайте --user для предоставления прав администратора.

Работал на меня!

Если вы используете Windows, запустите файл от имени администратора.

Если вы выполняете через cmd, запустите cmd от имени администратора и выполните скрипт python.

Ответ 6

Отказано в разрешении просто означает, что система не имеет разрешения на запись файла в эту папку. Дайте разрешения на папку с помощью "sudo chmod 777" из терминала и попробуйте запустить ее. Это сработало для меня.

Ответ 7

Убедитесь, что у вас есть права на запись для этого каталога, который вы пытались создать файл по свойствам

Ответ 8

Чтобы записать файл с помощью сценария Python, сначала необходимо создать текстовый файл. Пример Файл, такой как C: /logs/logs.txt, должен существовать. Только тогда работает следующий код:

logfile=open(r"C:/logs/logs.txt",'w')

Итак, резюме.

  1. Текстовый файл должен существовать в указанном месте
  2. Убедитесь, что вы закрыли файл перед запуском скрипта Python.