2013-08-30 13 views
9

Chcę utworzyć plik i zapisać w nim kilka danych liczb całkowitych w pythonie. Na przykład, mam zmiennej abc = 3 i próbuję napisać do pliku (który nie istnieje i zakładam python stworzy go na własną rękę):Błąd odmowy uprawnień podczas zapisywania do pliku w języku Python

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

pierwsze, python tworzyć sam plik newfile.dat? Po drugie, daje mi ten błąd:

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

Co jest nie tak?

+0

Tak, python musi tworzyć samodzielnie, ale czy widzisz uprawnienia folderu? – badc0re

Odpowiedz

1

Aby odpowiedzieć na pierwsze pytanie: tak, jeśli plik nie istnieje, Python go utworzy.

Po drugie, użytkownik (ty) uruchamiający skrypt Pythona nie ma uprawnień do zapisu, aby utworzyć plik w katalogu.

+0

To był błąd uprawnień, który jest teraz naprawiony, ale nadal pojawia się ten błąd: TypeError: oczekiwany obiekt bufora znaków – user1921843

+1

Aby napisać coś innego niż ciąg znaków, musi najpierw zostać przekonwertowany na ciąg znaków. Zobacz: http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects –

+0

aby dodać komentarz @RobertCaspary, możesz użyć 'str (abc)', aby przekonwertować na ciąg . więc 'fout.write (str (abc))' – mavili

0

Upewnij się, że masz uprawnienia zapisu dla tego katalogu, który staraliśmy się stworzyć plik właściwościami

+1

Pomogłoby OP podać przykład: – geotheory

2

Proszę zamknąć plik, jeśli to nadal otwarte na komputerze, a następnie spróbuj uruchomić kod Pythona. Mam nadzieję, że to działa

+0

Tryb "w" wygląda prawidłowo dla utworzenia pliku.Jeśli nie jest to otwarty plik, być może jest to problem uprawnień do katalogu roboczego? Z jakiego systemu operacyjnego korzysta OP? – killthrush

2

Dzieje się tak również w przypadku próby utworzenia pliku o takiej samej nazwie, jak nazwa katalogu:

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

Wynik:

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

miałem ten sam problem przy użyciu polecenia cmd (wiersz poleceń Windows):

C:\Windows\System32> "G:\some python programs\frequency-counter-from-text.py" 

Gdzie wewnątrz pyta na pliku coś takiego

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

Błąd było to, że gdy użytkownik nie korzysta z pełnej ścieżki, pyton użyłby aktualny katalog, a ponieważ domyślnym katalogiem na cmd jest

C:\Windows\System32 

że wygrał „t pracy, gdyż wydaje się być zabezpieczone przed zapisem i potrzebuje zgody & potwierdzenie utworzenia administratorem

Zamiast tego należy użyć pełnej ścieżki, na przykład:

Powiązane problemy