2017-08-03 1 views
0

Also habe ich ein Verzeichnis Dir und in Dir gibt es drei Unterverzeichnisse mit fünf Dateien jeder:Umbenennen von Dateien ohne Erweiterung

  1. Dir/A/eins, zwei, drei, vier, five.txt
  2. Dir/B/eins, zwei, drei, vier, five.txt
  3. dir/C/eins, zwei, drei, vier, five.txt

Wie Sie es vier Dateien ohne Erweiterung sehen und ein mit den .txt Erweiterungen ion

Wie benenne ich alle Dateien ohne Erweiterung auf rekursive Weise?

Derzeit versuche ich dies, die für ein einzelnes Verzeichnis funktioniert, aber wie kann ich alle Dateien abfangen, wenn ich dieses Skript in Dir?

import os, sys 

for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))): 
    base_file, ext = os.path.splitext(filename) 
    if ext == "": 
     os.rename(filename, base_file + ".png") 
+0

Werfen Sie einen Blick auf os.walk() und vielleicht diese SO-Frage: https://stackoverflow.com/questions/1176441/how-to-filter-files-with-known-type-from- os-walk –

Antwort

2

Verwenden os.walk wenn Sie rekursive Traversal ausführen möchten.

for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__))): 
    for file in files: 
     base_path, ext = os.path.splitext(os.path.join(root, file)) 

     if not ext: 
      os.rename(base_path, base_path + ".png") 

os.walk Ihre Dateien in normale Dateien und Verzeichnisse trennen, so ist os.path.isdir nicht benötigt.

+0

perfekt, vielen Dank! – Lyux

0
import os 

my_dir = os.getcwd() 
for root, dirnames, fnames in os.walk(my_dir): 
    for fname in fnames: 
     if fname.count('.'): continue # don't process a file with an extension 
     os.rename(os.path.join(root, fname), os.path.join(root, "{}.png".format(fname)))