Je voudrais changer l'extension des fichiers dans un dossier spécifique. J'ai lu sur ce sujet dans le forum. en utilisant des idées, j’ai écrit le code suivant et j’attends que cela fonctionne, mais cela ne fonctionne pas. Je serais reconnaissant pour toute orientation pour trouver mon erreur.
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
du fichier source n'est pas nécessaire, car os.rename
n'a besoin que des chemins source et cible pour exécuter le travail. De plus, os.rename
renvoie toujours None
, il est donc inutile d'appeler open
sur sa valeur de retour.
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)
J'ai simplement enlevé les deux open
. Vérifiez si cela fonctionne pour vous.
Vous n'avez pas besoin d'ouvrir les fichiers pour les renommer, os.rename
n'a besoin que de leurs chemins. Pensez également à utiliser le module glob :
import glob, os
for filename in glob.iglob(os.path.join(folder, '*.grf')):
os.rename(filename, filename[:-4] + '.las')
Quelque chose comme ça va renommer tous les fichiers du répertoire qui se terminent par .txt en .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 __== '__main__':
main()