¿Cuál es la mejor manera de abrir un archivo como lectura / escritura si existe, o si no existe, crearlo y abrirlo como lectura / escritura? Por lo que leí, file = open('myfile.dat', 'rw')
debería hacer esto, ¿verdad?
No funciona para mí (Python 2.6.2) y me pregunto si es un problema de versión, o si no debería funcionar así o qué.
La conclusión es que solo necesito una solución para el problema. Tengo curiosidad por las otras cosas, pero todo lo que necesito es una buena manera de hacer la parte inicial.
El directorio adjunto era escribible por usuario y grupo, no otro (estoy en un sistema Linux ... así que permisos 775 en otras palabras), y el error exacto fue:
IOError: no existe tal archivo o directorio.
python
linux
file-io
file-permissions
trh178
fuente
fuente
file
existan.Respuestas:
Deberías usar
open
con elw+
modo:fuente
w
trunca el archivo existente. docs: modos'r+'
,'w+'
y'a+'
abra el archivo para actualizarlo (tenga en cuenta que'w+'
trunca el archivo).open('myfile.dat', 'w')
entonces es suficiente.La ventaja del siguiente enfoque es que el archivo se cierra correctamente al final del bloque, incluso si se genera una excepción en el camino. Es equivalente a
try-finally
, pero mucho más corto.El método seek () establece la posición actual del archivo.
fuente
filename
?Una buena práctica es usar lo siguiente:
fuente
Cambiar "rw" a "w +"
O use 'a +' para agregar (no borrar contenido existente)
fuente
r + significa leer / escribir
fuente
Desde python 3.4 deberías usar
pathlib
para "tocar" archivos.Es una solución mucho más elegante que las propuestas en este hilo.
Lo mismo con los directorios:
fuente
touch
actualiza la última hora de modificación cuando se usa.touch
en la línea de comandos en Linux, así que supongo que es el comportamiento previsto.Mi respuesta:
fuente
ejemplo:
Espero que esto ayude. [FYI estoy usando python versión 3.6.2]
fuente
open('myfile.dat', 'a')
funciona para mí, muy bien.en py3k su código aumenta
ValueError
:en python-2.6 sube
IOError
.fuente
Utilizar:
Nota: Los archivos deben cerrarse después de abrirlos, y el administrador de contexto con es una buena manera de dejar que Python se encargue de esto por usted.
fuente
¿Qué quieres hacer con el archivo? ¿Solo escribirle o leer y escribir?
'w'
,'a'
permitirá escribir y creará el archivo si no existe.Si necesita leer un archivo, el archivo debe existir antes de abrirlo. Puede probar su existencia antes de abrirlo o usar un try / except.
fuente
Creo que
r+
no lo esrw
. Solo soy un principiante, y eso es lo que he visto en la documentación.fuente
Ponga w + para escribir el archivo, truncando si existe, r + para leer el archivo, creando uno si no existe pero no escribiendo (y devolviendo nulo) o a + para crear un nuevo archivo o anexar a uno existente.
fuente
Entonces, ¿desea escribir datos en un archivo, pero solo si aún no existe?
Este problema se resuelve fácilmente utilizando el modo x poco conocido para abrir () en lugar del modo w habitual. Por ejemplo:
Si el archivo está en modo binario, use el modo xb en lugar de xt.
fuente
Si desea abrirlo para leerlo y escribirlo, supongo que no desea truncarlo al abrirlo y desea poder leer el archivo inmediatamente después de abrirlo. Entonces esta es la solución que estoy usando:
fuente
tal vez esto ayude
primero importe el módulo os en su archivo py
luego cree una variable llamada save_file y configúrela en el archivo que desea hacer html o txt en este caso un archivo txt
luego defina una función que utilizará el método de archivo os.path.is para verificar si existe el archivo y, de lo contrario, creará un archivo
y al fin llamar a la función
fuente
fuente