2010-06-22 20 views
22

Estoy tratando de escribir en un archivo que aún no existe usando un administrador de archivos de contexto.¿modo de escritura crea un nuevo archivo si no existe?

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

Lo anterior no se realiza correctamente. ¿Cómo crearía un archivo para escribir si ya existe?

+0

no repro, funciona muy bien para mí – SilentGhost

+0

Agregue a su pregunta: ¿qué versión de Python, en qué plataforma se está ejecutando (Windows?) Y el mensaje de error exacto. –

+1

El modo "w" debería crear automáticamente el archivo si no existe. ¿Podría editar su pregunta para incluir los comandos/códigos específicos que está ejecutando y el mensaje de error y rastreo que resulta? Gracias. – nearlymonolith

Respuesta

0

Si está preguntando cómo advertirse cuando el archivo no existe, debe verificarlo explícitamente.

Ver here

27

Sí, 'w' se especifica como la creación de un nuevo archivo - the docs como ponerlo,

'w' para la escritura (truncando el archivo si ya existe),

(infiere claramente que no está permitido). Muestre el rastreo exacto, no solo su propio resumen, ya que los detalles son importantes, por ejemplo, si la ruta real que está utilizando es diferente, lo que falta puede ser la unidad, o algún directorio intermedio; o puede haber problemas de permisos.

+7

Tenga en cuenta que NO creará directorios si no existen. –

3

[Editado para reflejar que el problema es probable que no hacia adelante frente a la espalda slash]

Si he entendido bien, desea que el archivo que se crea automáticamente para usted, ¿verdad?

abrir en modo escritura crea el archivo para usted. Sería más claro si nos dijera el error exacto que está obteniendo. Podría ser algo así como que no tienes permiso para escribir en C :.

me había sugerido previamente que podría ser debido a la barra inclinada, y se indica que el PO podría intentar:

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

Nota del r antes de que la ruta del archivo, lo que indica modo raw (que es decir, la barra invertida no se interpretará como especial).

Sin embargo, como señaló Brian Neal (así como otros, comentando en otro lugar), probablemente esa no sea la razón del error. Lo estoy guardando aquí solo por razones históricas.

+0

No es la barra diagonal. Su fragmento de código funciona bien para mí en Windows. –

+0

Esto se me ocurrió un poco más tarde. Todavía estoy esperando que el OP nos dé el error, pero editaré mi respuesta mientras tanto. Gracias :) – rbp

3

Probablemente esté intentando escribir en un directorio que no existe o en el que no tiene permiso para escribir.

Si desea escribir al C:\foo\bar\foobar.txt, asegúrese de que tiene un C:\foo\bar\ que existe (y en caso de que los permisos funcionen en Windows, asegúrese de tener permiso para escribir allí).

Ahora cuando abre el archivo en modo de escritura, se debe crear un archivo.

+0

Apuesto a que este es un problema de permisos. El valor predeterminado para Vista y Windows 7 no es permitir que los usuarios comunes escriban archivos en el directorio raíz. –

Cuestiones relacionadas