¿Cambiar la extensión de archivo para archivos en una carpeta?

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()