paths open another python filepath

python - open - ¿Por qué usar os.path.join sobre concatenación de cadenas?



python open file (3)

Portátil

Escriba las manipulaciones de ruta de acceso una vez y funciona en muchas plataformas diferentes, de forma gratuita. El carácter delimitador se abstrae, facilitando su trabajo.

Inteligente

Ya no tiene que preocuparse si la ruta del directorio tiene una barra diagonal o no . os.path.join lo agregará si es necesario.

Claro

El uso de os.path.join hace que sea obvio para otras personas que leen tu código que estás trabajando con filepaths. Las personas pueden escanear rápidamente el código y descubrir que se trata de una ruta de archivo intrínsecamente. Si decides construirlo por ti mismo, es probable que desestimes al lector para que no encuentre problemas reales con tu código: "Hmm, algunas cuerdas concat, una sustitución. ¿Es esto una ruta de archivo o qué? ¡Gah! ¿Por qué no usó os.path.join ? " :)

No puedo ver el cuadro más grande aquí, creo; pero básicamente no tengo idea de por qué usaría os.path.join lugar de solo la concatenación de cadenas normal.

He utilizado principalmente VBScript, por lo que no entiendo el punto de esta función.


Es independiente del sistema operativo. Si codifica sus rutas como C: / Lo que sea, solo funcionarán en Windows. Si los codifica con el estándar de Unix "/", solo funcionarán en Unix. os.path.join detecta el sistema operativo en el que se ejecuta y une las rutas con el símbolo correcto.


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 tiene ventanas pero lo mismo debería estar ahí con ''/'