2009-09-13 16 views
6

Una pregunta bastante tonta y trivial. El ejemplo clásico es f = open('filename'), pero¿Qué nombre de variable usas para los descriptores de archivos?

  • f no es muy descriptivo. Después de no mirar el código por un tiempo, puede olvidar si significa "archivo" o "función f (x)" o "fourier transformar resultados" o algo más. EIBTI.
  • En Python, file ya está ocupado por una función.

¿Qué más usas?

+3

'file()' se desaprobó en 2.x y se eliminó completamente en 3.x, así que en mi humilde opinión es el juego justo –

+0

@NickT Good. Siempre estoy confundido sobre si usar 'file' o' open' – endolith

Respuesta

4
data_file 
settings_file 
results_file 
.... etc 
+7

Esto es un poco antiponético. PEP 8 recomienda usar lower_case_with_underscores. –

+1

"Nombres de métodos y variables de instancia: use las reglas de denominación de funciones: minúsculas con palabras separadas por guiones bajos según sea necesario para mejorar la legibilidad". http://www.python.org/dev/peps/pep-0008/ – endolith

+0

@endolith: Debería usar mi sugerencia para el código de Python. El estuche Camel es de estilo Java. – Unknown

2

general, voy a utilizar "fp" para un puntero de fichero corto tiempo de vida.

para un descriptor de mayor duración, seré más descriptivo. "fpDebugLog", por ejemplo.

4

Puede adjuntarlo al principio, similar a un húngaro "file_fft".

Sin embargo, trataría de cerrar los descriptores de archivos tan pronto como sea posible, y recomiendo usar la instrucción con como esta para que no tenga que preocuparse por cerrarla, y hace que sea más fácil no perderla .

with open("x.txt") as f: 
    data = f.read() 
    do something with data 
+0

"con" es genial! Definitivamente ha limpiado mi código considerablemente. Puedes usarlo en 2.5 "desde __future__ import with_statement" –

+0

El objeto que estoy usando para abrir el archivo no funciona con las instrucciones. "el objeto no tiene ningún atributo '__exit__'" – endolith

+1

@endolith: luego usa ['contextlib.closing'] (http://docs.python.org/library/contextlib.html#contextlib.closing). – icktoofay

3

estoy feliz de usar f (ya sea para una función o un archivo ;-) si el ámbito de ese identificador está limitado a una muy pequeña brújula (como with open('zap') as f: normalmente presagiar, dicen). En general, los identificadores con grandes alcances léxicos deberían ser más largos y explícitos, los que tienen alcances/vidas léxicas pequeñas/cortas pueden ser más cortos y menos explícitos, y esto se aplica al objeto de archivo abierto casi tanto como a cualquier otro tipo de objeto. -)

0

Prefiero usar uno de: f, fp, fd.

Algunas veces inf/outf para archivo de entrada y salida.

2

Generalmente, si el alcance de un objeto de archivo es de unas pocas líneas, f es perfectamente legible; el nombre de la variable para el nombre de archivo en la llamada abierta es probablemente lo suficientemente descriptivo. de lo contrario, something_file es probablemente una buena idea.

Cuestiones relacionadas