Esto funciona bien:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Manten eso en mente os.path.join()
existe solo porque diferentes sistemas operativos usan diferentes caracteres separadores de ruta. Suaviza esa diferencia para que el código multiplataforma no tenga que estar lleno de casos especiales para cada sistema operativo. No es necesario hacer esto para las "extensiones" de nombre de archivo (ver nota al pie) porque siempre están conectadas al resto del nombre con un carácter de punto, en cada sistema operativo.
Si usar una función de todos modos te hace sentir mejor (y te gusta complicar innecesariamente tu código), puedes hacer esto:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Si prefiere mantener limpio su código, simplemente incluya el punto en el sufijo:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Este enfoque también es compatible con las convenciones de sufijos en pathlib , que se introdujo en python 3.4).
Nota al pie: No existe una "extensión" de nombre de archivo en sistemas operativos que no sean de Micorsoft. Su presencia en Windows proviene de MS-DOS y FAT, que lo tomó prestado de CP / M, que ha estado muerto durante décadas. Ese punto más tres letras que muchos de nosotros estamos acostumbrados a ver es solo parte del nombre del archivo en cualquier otro sistema operativo moderno, donde no tiene un significado incorporado.
.
. Para esto se puede usaros.extsep
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Tu respuesta es perfectamente correcta.+
entre partes de nombre de archivo.os.path.join()
agrega separadores de ruta específicos del sistema operativo (/
por ejemplo) entre los argumentos (ya que @ sәɹoɈ los tiene correctamente en su respuesta. Por lo tanto, la forma correcta de su fragmento de código es:os.path.join(dir_name, base_filename + os.extsep + extension)
Si tiene la suerte de ejecutar Python 3.4+, puede usar
pathlib
:fuente
with_suffix()
lo sustituirá en lugar de agregarlo. Quieres algo comoPath(dirname, filename2 + suffix)
Um, ¿por qué no solo:
fuente
Solo use
os.path.join
para unir su ruta con el nombre de archivo y la extensión. Usesys.argv
para acceder a los argumentos pasados al script cuando lo ejecuta:Simplemente ejecute el script como:
fuente