it-swarm.com.de

Ändern Sie die Dateierweiterung für Dateien in einem Ordner?

Ich möchte die Erweiterung der Dateien in einem bestimmten Ordner ändern. Ich habe über dieses Thema im Forum gelesen. Mit Ideen habe ich folgenden Code geschrieben und erwarte, dass es funktionieren würde, aber es funktioniert nicht. Ich wäre dankbar für Hinweise, um meinen Fehler zu finden. 

   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')
20
user2355306

Die Variable open in der Quelldatei ist nicht erforderlich, da os.rename nur die Quell- und Zielpfade benötigt, um die Aufgabe auszuführen. Außerdem gibt os.rename immer None zurück, so dass es nicht sinnvoll ist, open mit seinem Rückgabewert aufzurufen. 

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)

Ich habe einfach die beiden open entfernt. Prüfen Sie, ob dies für Sie funktioniert.

24
chenaren

Sie müssen die Dateien nicht öffnen, um sie umzubenennen, os.rename benötigt nur deren Pfade. Erwägen Sie auch die Verwendung des Moduls glob :

import glob, os

for filename in glob.iglob(os.path.join(folder, '*.grf')):
    os.rename(filename, filename[:-4] + '.las')
14
elyase

Auf diese Weise werden alle Dateien im ausführenden Verzeichnis, die auf .txt enden, in .text umbenannt

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")
11
Emjay
#!/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()
0
Ricky Wilson