2010-06-22 15 views
22

Sto provando a scrivere su un file che non esiste già utilizzando un gestore di contesto file.la modalità di scrittura crea un nuovo file se non esiste?

a=open ('C:/c.txt' , 'w') 

Quanto sopra non riesce. Come potrei creare un file per scrivere se esiste già?

+0

no repro, funziona perfettamente per me – SilentGhost

+0

Si prega di aggiungere alla tua domanda: quale versione di Python, su quale piattaforma si esegue (Windows?) E il messaggio di errore esatto. –

+1

La modalità "w" dovrebbe creare automaticamente il file se non esiste: potresti modificare la tua domanda per includere il comando/codice specifico che stai utilizzando e il messaggio di errore e il traceback che ne risulta? Grazie. – nearlymonolith

risposta

0

Se stai chiedendo come essere avvisato quando il file non esiste, devi verificarlo esplicitamente.

Vedi here

27

Sì, 'w' specificato come la creazione di un nuovo file - come the docs dirla,

'w' per la scrittura (troncando il file se esiste già),

(chiaramente si deduce che non è ancora possibile esistere). Si prega di mostrare il traceback esatto, non solo il proprio sommario, poiché i dettagli contano - ad es. se il percorso che stai utilizzando è diverso, quello che manca potrebbe essere l'unità o una directory intermedia; o potrebbero esserci problemi di permessi.

+7

Si noti che non creerà le directory se queste non esistono comunque. –

3

[Modificato per riflettere che il problema non è probabilmente in avanti rispetto indietro gli slash]

Se ho capito bene, si desidera che il file da creare automaticamente per voi, giusto?

aperto in modalità di scrittura crea il file per te. Sarebbe più chiaro se ci hai detto l'errore esatto che stai ricevendo. Potrebbe essere qualcosa come se non avessi il permesso di scrivere in C :.

precedenza avevo suggerito che potrebbe essere a causa della barra, e ha indicato che il PO potrebbe provare:

a = open(r'C:\c.txt', 'w') 

Annotare il r prima che il percorso del file, indicando modalità raw (che è, il backslash non sarà interpretato come speciale).

Tuttavia, come ha fatto notare Brian Neal (così come altri, commentando altrove), questo probabilmente non è il motivo dell'errore. Lo tengo qui semplicemente per scopi storici.

+0

Non è la barra diretta. Il suo frammento di codice funziona bene per me su Windows. –

+0

Mi è venuto in mente un po 'più tardi. Sto ancora aspettando che l'OP ci dia l'errore, ma nel frattempo modificherò la mia risposta. Grazie :) – rbp

3

Probabilmente stai provando a scrivere in una directory che non esiste o in cui non hai il permesso di scrivere.

Se si desidera scrivere su C:\foo\bar\foobar.txt, assicurarsi di disporre di uno C:\foo\bar\ esistente (e nel caso in cui le autorizzazioni funzionino su Windows, assicurarsi di avere il permesso di scrivere lì).

Ora quando si apre il file in modalità di scrittura, è necessario creare un file.

+0

Scommetto che questo è un problema di permessi. L'impostazione predefinita per Vista e Windows 7 non è quella di consentire agli utenti ordinari di scrivere file nella directory principale. –

Problemi correlati