una txt read partir open manejo lista linea leer importar guardar especifica ejercicios crear como carpetas archivos archivo python linux file-io file-permissions

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)