Me gustaría cambiar la extensión de los archivos en una carpeta específica. Leí sobre este tema en el foro. Usando he ideas, he escrito el siguiente código y espero que funcione pero no funciona. Agradecería cualquier orientación para encontrar mi error.
import os,sys folder = 'E:/.../1936342-G/test' for filename in os.listdir(folder): infilename = os.path.join(folder,filename) if not os.path.isfile(infilename): continue oldbase = os.path.splitext(filename) infile= open(infilename, 'r') newname = infilename.replace('.grf', '.las') output = os.rename(infilename, newname) outfile = open(output,'w')
La open
en el archivo de origen no es necesaria, ya que os.rename
solo necesita las rutas de origen y destino para realizar el trabajo. Por otra parte, os.rename
siempre devuelve None
, por lo que no tiene sentido open
en su valor de retorno.
import os,sys folder = 'E:/.../1936342-G/test' for filename in os.listdir(folder): infilename = os.path.join(folder,filename) if not os.path.isfile(infilename): continue oldbase = os.path.splitext(filename) newname = infilename.replace('.grf', '.las') output = os.rename(infilename, newname)
Simplemente quité los dos open
. Compruebe si esto funciona para usted.
No es necesario abrir los archivos para cambiarles el nombre, os.rename
solo necesita sus rutas. También considere usar el módulo glob :
import glob, os for filename in glob.iglob(os.path.join(folder, '*.grf')): os.rename(filename, filename[:-4] + '.las')
Algo como esto cambiará el nombre de todos los archivos en el directorio de ejecución que terminen en .txt a .text
import os, sys for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))): base_file, ext = os.path.splitext(filename) if ext == ".txt": os.rename(filename, base_file + ".text")
#!/usr/bin/env python ''' Batch renames file's extension in a given directory ''' import os import sys from os.path import join from os.path import splitext def main(): try: work_dir, old_ext, new_ext = sys.argv[1:] except ValueError: sys.exit("Usage: {} directory old-ext new-ext".format(__file__)) for filename in os.listdir(work_dir): if old_ext == splitext(filename)[1]: newfile = filename.replace(old_ext, new_ext) os.rename(join(work_dir, filename), join(work_dir, newfile)) if __name__ == '__main__': main()