Estoy tratando de imprimir carpetas de ruta de Python usando esto:
import sys
print sys.path
La salida es así:
>>> print sys.path
['.', '/usr/bin', '/home/student/Desktop', '/home/student/my_modules', '/usr/lib/pyth
on2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/pyth
on2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-pack
ages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/
usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/
python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/p
ython2.6/dist-packages/wx-2.8-gtk2-unicode']
¿Cómo los imprimo en líneas independientes para poder analizarlos correctamente?
Debería ser así:
/usr/bin
/home/student/Desktop
/home/student/my_modules
etc
Respuestas:
print("\n".join(sys.path))
(Los paréntesis externos se incluyen para compatibilidad con Python 3 y generalmente se omiten en Python 2).
fuente
for line in sys.path: print line
f = lambda *x: null; f( *( print( x ) for x in sys.path ) )
- solo bromeaba ...Utilice la función de impresión (Python 3.x) o impórtela (Python 2.6+):
from __future__ import print_function print(*sys.path, sep='\n')
fuente
Otra buena opción para manejar este tipo de opciones es el
pprint
módulo, que (entre otras cosas) imprime bastante listas largas con un elemento por línea:>>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['', '/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/PIL', '/usr/lib/python2.7/site-packages/gst-0.10', '/usr/lib/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info', '/usr/lib/python2.7/site-packages/webkit-1.0'] >>>
fuente
a = [1,3,5]
, entonces esa línea solo imprimirá esta matriz en una línea ... ¿hay una forma garantizada depprint
imprimirla en líneas separadas?pprint.pprint(x,width=max([len(str(s)) for s in x])+3)
for path in sys.path: print path
fuente
La respuesta de Sven Marnach es más o menos eso, pero tiene un problema de generalidad ... Fallará si la lista que se imprime no solo contiene cadenas.
Entonces, la respuesta más general a "Cómo imprimir una lista con elementos separados por líneas nuevas" ...
print '\n'.join([ str(myelement) for myelement in mylist ])
Por otra parte, el enfoque de la función de impresión que señala JBernardo es superior. Si puede, usar la función de impresión en lugar de la declaración de impresión es casi siempre una buena idea.
fuente
Utilice el operador de splat (*)
De forma predeterminada, el operador * imprime la lista separada por espacios. Utilice el
sep
operador para especificar el delimitadorprint(*sys.path, sep = "\n")
fuente
sys.path devuelve la lista de rutas
árbitro
Una lista de cadenas que especifica la ruta de búsqueda de módulos. Inicializado desde la variable de entorno PYTHONPATH , más un valor predeterminado que depende de la instalación.
Como se inicializó al iniciar el programa, el primer elemento de esta lista, ruta [0], es el directorio que contiene el script que se utilizó para invocar al intérprete de Python. Si el directorio del script no está disponible (por ejemplo, si el intérprete se invoca de forma interactiva o si el script se lee desde la entrada estándar), la ruta [0] es la cadena vacía, que indica a Python que busque módulos en el directorio actual primero. Observe que el directorio de secuencias de comandos se inserta antes de las entradas insertadas como resultado de PYTHONPATH .
import sys dirs=sys.path for path in dirs: print(path)
o puede imprimir solo la primera ruta por
print(dir[0])
fuente