txt - leer una linea especifica de un archivo en python
open() en Python no crea un archivo si no existe (16)
¿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.
¿Cuál es la mejor manera de abrir un archivo como lectura / escritura si existe, o si no existe, créelo y ábralo como lectura / escritura? Por lo que leí, file = open(''myfile.dat'', ''rw'')
debería hacer esto, ¿verdad?
No está funcionando para mí (Python 2.6.2) y me pregunto si es un problema de versión, o si se supone que no funciona 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 forma de hacer la parte inicial.
ACTUALIZACIÓN: el directorio adjunto se puede escribir por usuario y grupo, no por otro (estoy en un sistema Linux ... en otras palabras, los permisos 775), y el error exacto fue:
IOError: no existe tal archivo o directorio.
Cambia "rw" a "w +"
O use ''a +'' para adjuntar (sin borrar el contenido existente)
Creo que es r + , no rw . Solo soy un titular, y eso es lo que he visto en la documentación.
Debes usar open
con el modo w+
:
file = open(''myfile.dat'', ''w+'')
Desde Python 3.4 debes usar pathlib
para "tocar" archivos.
Es una solución mucho más elegante que las propuestas en este hilo.
from pathlib import Path
filename = Path(''myfile.txt'')
filename.touch(exist_ok=True) # will create file, if it exists will do nothing
file = open(filename)
Lo mismo con los directorios:
filename.mkdir(parents=True, exist_ok=True)
Entonces, ¿quieres 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:
>>> with open(''somefile'', ''wt'') as f:
... f.write(''Hello/n'')
...
>>> with open(''somefile'', ''xt'') as f:
... f.write(''Hello/n'')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: ''somefile''
>>>
Si el archivo está en modo binario, use el modo xb en lugar de xt.
La ventaja del siguiente enfoque es que el archivo está correctamente cerrado al final del bloque, incluso si se presenta una excepción en el camino. Es equivalente a try-finally
, pero mucho más corto.
with open("file.dat","a+") as f:
f.write(...)
...
a + Abre un archivo para añadir y leer. El puntero del archivo se encuentra al final del archivo si el archivo existe. El archivo se abre en el modo de añadir. Si el archivo no existe, crea un nuevo archivo para leer y escribir. - Modos de archivo de Python
El método seek () establece la posición actual del archivo.
f.seek(pos [, (0|1|2)])
pos .. position of the r/w pointer
[] .. optionally
() .. one of ->
0 .. absolute position
1 .. relative position to current
2 .. relative position from end
Sólo se permiten los caracteres "rwab +"; debe haber exactamente uno de "rwa"; consulte la pregunta sobre Desbordamiento de pila en detalles sobre los modos de archivo Python .
Mi respuesta:
file_path = ''myfile.dat''
try:
fp = open(file_path)
except IOError:
# If not exists, create the file
fp = open(file_path, ''w+'')
Ponga w + para escribir el archivo, truncando si existe, r + para leer el archivo, creando uno si no existe pero sin escribir (y devolviendo el valor nulo) o a + para crear un nuevo archivo o agregarlo a uno existente.
Si desea abrirlo para leer y escribir, supongo que no desea truncarlo cuando lo abre y desea poder leer el archivo justo después de abrirlo. Así que esta es la solución que estoy usando:
file = open(''myfile.dat'', ''a+'')
file.seek(0, 0)
Una buena práctica es usar lo siguiente:
import os
writepath = ''some/path/to/file.txt''
mode = ''a'' if os.path.exists(writepath) else ''w''
with open(writepath, mode) as f:
f.write(''Hello, world!/n'')
Utilizar:
import os
f_loc = r"C:/Users/Russell/Desktop/ip_addr.txt"
if not os.path.exists(f_loc):
open(f_loc, ''w'').close()
with open(f_loc) as f:
#Do stuff
Asegúrese de cerrar los archivos después de abrirlos. El administrador de contexto lo hará por ti.
open(''myfile.dat'', ''a'')
funciona para mí, muy bien.
en py3k su código genera ValueError
:
>>> open(''myfile.dat'', ''rw'')
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
open(''myfile.dat'', ''rw'')
ValueError: must have exactly one of read/write/append mode
en Python-2.6 se eleva IOError
.
>>> import os
>>> if os.path.exists("myfile.dat"):
... f = file("myfile.dat", "r+")
... else:
... f = file("myfile.dat", "w")
r + significa lectura / escritura
''''''
w write mode
r read mode
a append mode
w+ create file if it doesn''t exist and open it in write mode
r+ create file if it doesn''t exist and open it in read mode
a+ create file if it doesn''t exist and open it in append mode
''''''
ejemplo:
file_name = ''my_file.txt''
f = open(file_name, ''w+'') # open file in write mode
f.write(''python rules'')
f.close()
Espero que esto ayude. [FYI estoy usando la versión 3.6.2 de Python
import os, platform
os.chdir(''c://Users//MS//Desktop'')
try :
file = open("Learn Python.txt","a")
print(''this file is exist'')
except:
print(''this file is not exist'')
file.write(''/n''''Hello Ashok'')
fhead = open(''Learn Python.txt'')
for line in fhead:
words = line.split()
print(words)