Creo que no puedo ver el panorama completo aquí; pero básicamente no tengo idea de por qué usarías en os.path.join
lugar de la concatenación de cadenas normal.
He usado principalmente VBScript, así que no entiendo el sentido de esta función.
Creo que no puedo ver el panorama completo aquí; pero básicamente no tengo idea de por qué usarías en os.path.join
lugar de la concatenación de cadenas normal.
He usado principalmente VBScript, así que no entiendo el sentido de esta función.
Respuestas:
Escriba manipulaciones de ruta de archivo una vez y funciona en muchas plataformas diferentes, de forma gratuita. El carácter delimitador se abstrae, facilitando su trabajo.
Ya no necesita preocuparse si esa ruta de directorio tiene una barra al final o no . os.path.join
lo agregará si es necesario.
El uso os.path.join
hace que sea obvio para otras personas que lean su código que está trabajando con rutas de archivo. Las personas pueden escanear rápidamente el código y descubrir que es una ruta de archivo intrínsecamente. Si decide construirlo usted mismo, probablemente distraiga al lector de encontrar problemas reales con su código: "Hmm, algunas cadenas de caracteres, una sustitución. ¿Es una ruta de archivo o qué? ¡Gah! ¿Por qué no usó os.path.join
?" :)
os.path.join
, pero si lo hace, hágalo por las razones correctas. Hay mucha carga-culting alrededor de os.path.join. "Una consistencia tonta es el duende de las mentes pequeñas", como dicen.
Funcionará en Windows con '\' y Unix (incluido Mac OS X) con '/'.
para posixpath aquí está el código sencillo
In [22]: os.path.join??
Type: function
String Form:<function join at 0x107c28ed8>
File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += '/' + b
return path
no tengo ventanas pero lo mismo debería estar ahí con '\'
/
funciona en Windows, con CPython…
Es independiente del sistema operativo. Si codifica sus rutas como C: \ Whatever, solo funcionarán en Windows. Si los codifica con el estándar Unix "/", solo funcionarán en Unix. os.path.join detecta el sistema operativo bajo el que se está ejecutando y une las rutas usando el símbolo correcto.
If you hardcode them with the Unix standard "/" they will only work on Unix.
Eso está mal. "/" funciona bien en windows y linux / unix / bsd / darwin.