script programa integrar ejecutar desde cómo consola conectar con como archivos archivo python join filenames

programa - construir el nombre de archivo completo en python,



integrar python con html (4)

Necesito pasar un nombre de ruta de archivo a un módulo que crea un documento de informe como pdf, html, etc. ¿Cómo construyo el nombre de ruta del archivo a partir de un nombre de directorio, un nombre de archivo base y una cadena de formato de archivo?

El directorio puede o no existir en el momento de la llamada

por ejemplo

dir_name=''/home/me/dev/my_reports'' base_filename=''daily_report'' format = ''pdf''

Necesito crear una cadena ''/home/me/dev/my_reports/daily_report.pdf''

concatenar manualmente las piezas no parecía ser una buena forma. Intenté os.path.join

join(dir_name,base_filename,format)

pero da

''/home/me/dev/my_reports/daily_report/pdf''


Esto funciona bien:

os.path.join(dir_name, base_filename + "." + filename_suffix)

Tenga en cuenta que os.path.join() existe para suavizar los diferentes caracteres separadores de ruta utilizados por los diferentes sistemas operativos, por lo que su código no tiene que tener un caso especial cada uno. Las "extensiones" de nombre de archivo solo tienen un significado significativo en un sistema operativo importante (simplemente son parte del nombre del archivo en sistemas que no son de Windows), y su separador siempre es un punto. No es necesario que una función se una a ellos, pero si usar uno te hace sentir mejor, puedes hacer esto:

os.path.join(dir_name, ''.''.join((base_filename, filename_suffix)))

O bien, si desea mantener su código realmente limpio, simplemente incluya el punto en el sufijo:

suffix = ''.pdf'' os.path.join(dir_name, base_filename + suffix)


Si tiene la suerte de estar ejecutando Python 3.4+, puede usar pathlib :

>>> from pathlib import Path >>> dirname = "/home/reports" >>> filename = "daily" >>> suffix = ".pdf" >>> Path(dirname).joinpath(filename).with_suffix(suffix) PosixPath(''/home/reports/daily.pdf'')


Simplemente use os.path.join para unir su ruta con el nombre de archivo y la extensión. Use sys.argv para acceder a los argumentos pasados ​​al script al ejecutarlo:

#!/usr/bin/env python3 # coding: utf-8 # import netCDF4 as nc import numpy as np import numpy.ma as ma import csv as csv import os.path import sys basedir = ''/data/reu_data/soil_moisture/'' suffix = ''nc'' def read_fid(filename): fid = nc.MFDataset(filename,''r'') fid.close() return fid def read_var(file, varname): fid = nc.Dataset(file, ''r'') out = fid.variables[varname][:] fid.close() return out if __name__ == ''__main__'': if len(sys.argv) < 2: print(''Please specify a year'') else: filename = os.path.join(basedir, ''.''.join((sys.argv[1], suffix))) time = read_var(ncf, ''time'') lat = read_var(ncf, ''lat'') lon = read_var(ncf, ''lon'') soil = read_var(ncf, ''soilw'')

Simplemente ejecute el script como:

# on windows-based systems python script.py year # on unix-based systems ./script.py year


Um, ¿por qué no solo?

>>>> import os >>>> os.path.join(dir_name, base_filename + "." + format) ''/home/me/dev/my_reports/daily_report.pdf''