2016-05-03 13 views
1

私は最近誤って削除したフォルダを回復しました。 .jpgファイルと.tar.gzファイルがあります。ただし、すべてのファイルにハッシュ拡張機能が追加され、ファイルごとに異なるようになりました。フォルダには600以上のファイルがあります。ですから、例えば名は次のようになります。Pythonを使用して.jpgファイルからランダムに生成されたファイル拡張子を削除する

IMG001.jpg.3454637876876978068 
IMG002.jpg.2345447786787689769 
IMG003.jpg.3454356457657757876 

folder1.tar.gz.45645756765876 
folder2.tar.gz.53464575678588 
folder3.tar.gz.42345435647567 

私は順番に行くことができるスクリプトを持っていると思います(たぶん私は拡張子を指定することも、2回の反復を通じて1を持つことができます。 jpgファイルと.tar.gzを介して他のもの)を削除し、ファイル名の最後の部分を、番号の直前。だから、最終的なファイル名は、.JPGで終わると私はPythonでこれまで持って何

を.tar.gzファイルになります。

import os 

def scandirs(path): 
    for root, dirs, files in os.walk(path): 
     for currentFile in files: 
      os.path.splitext(currentFile) 

scandirs('C:\Users\ad\pics') 

明らかにそれは動作しません。助けていただければ幸いです。私はまた、bashスクリプトの使用を検討するだろうが、私はそれを行う方法を知らない。

+0

あなたは窓の上にいるようです。この問題に対処するためのbashスクリプトが必要なのか疑問です。 – Anonymous

答えて

0

shutil.move(currentFile,os.path.splitext(currentFile)[0])

少なくとも私はここで...

0

は、正規表現を使用して、私はそれを行うだろうかだと思う:

import os 
import re 

pattern = re.compile(r'^(.*)\.\d+$') 


def scandirs(path): 
    for root, dirs, files in os.walk(path): 
     for currentFile in files: 
      match = pattern.match(currentFile) 
      if match: 
       os.rename(
        os.path.join(root, currentFile), 
        os.path.join(root, match.groups(1)[0]) 
       ) 

scandirs('C:/Users/ad/pics') 
0

あなたはのタグが付いているので、私はあなたに答えを与えますディレクトリ内のすべてのファイル/ディレクトリの最後の拡張子が削除されます。

for f in *; do 
    mv "$f" "${f%.*}" 
done 
+0

私はカレントディレクトリでこれを実行していますか? –

+0

@TendekaiMuchenjeはい – andlrc

関連する問題