2013-08-30 16 views
9

Voglio creare un file e scrivere alcuni dati interi su di esso in python. Per esempio, ho un abc variabile = 3 e sto cercando di scrivere in un file (che non esiste e presumo pitone creerà esso da solo):Errore di autorizzazione durante la scrittura su un file in Python

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

In primo luogo, sarà python creare un newfile.dat da solo? In secondo luogo, mi sta dando questo errore:

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

Cosa c'è che non va qui?

+0

Sì python deve creare da solo, ma è possibile visualizzare le autorizzazioni della cartella? – badc0re

risposta

1

Per rispondere alla prima domanda: sì, se il file non è presente, Python lo creerà.

In secondo luogo, l'utente (te stesso) che esegue lo script python non dispone dei privilegi di scrittura per creare un file nella directory.

+0

Si trattava di un errore di autorizzazione che è stato risolto ma è ancora in arrivo questo errore: TypeError: previsto un oggetto buffer di carattere – user1921843

+1

Per scrivere qualcosa di diverso da una stringa, è necessario prima convertirlo in stringa. Vedi: http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects –

+0

da aggiungere al commento di @RobertCaspary, puoi usare 'str (abc)' per convertire in stringa . quindi 'fout.write (str (abc))' – mavili

0

Assicurarsi di disporre delle autorizzazioni di scrittura per quella directory si stavano cercando di creare il file da proprietà

+1

Potrebbe aiutare l'OP a fornire un esempio – geotheory

2

Si prega di chiudere il file se ancora aperte sul computer, quindi provare a eseguire il codice python. Spero che funzioni

+0

La modalità "w" sembra corretta per la creazione di un file.Se non è un file aperto, forse è un problema di autorizzazioni con la directory di lavoro? Quale sistema operativo utilizza l'OP? – killthrush

2

Questo accade anche quando si tenta di creare un file con lo stesso nome di una directory:

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

Risultato:

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

Ho avuto lo stesso problema utilizzando il cmd (finestre riga di comando) simili

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

Qualora all'interno Pyth in archivio qualcosa come questo

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

L'errore è che quando non si utilizza un percorso completo, pitone userebbe la directory corrente, e perché la directory predefinita sul cmd è

C:\Windows\System32 

che ha vinto 't lavoro, come sembra essere protetto da scrittura e le esigenze permesso & conferma formano un amministratore

Invece, è necessario utilizzare percorsi completi, ad esempio:

myfile = open('G:\some python programs\myOutput.txt', 'w') 
Problemi correlati