2012-03-19 9 views
1

ファイル名を「名前」と「拡張子」に分割するスクリプトを使用しています。そのため、一連のルールを適用して、名前:.part「を、スクリプトが最後に戻って一緒にすべてをかける「パーツ#+。rar」を含めるには「拡張子」

を現時点では、私が使用しているしている。

import os, shutil, re 
def rename_file (original_filename): 
    name, extension = os.path.splitext(original_filename)  
    name = re.sub(r"\'", r"", name) # etc...more of these... 
    new_filename = name + extension 
    try: 
     # moves files or directories (recursively) 
     shutil.move(original_filename, new_filename) 
    except shutil.Error: 
     print ("Couldn't rename file %(original_filename)s!" % locals()) 
[rename_file(f) for f in os.listdir('.') if not f.startswith('.')] 

を私の問題は、そのos.path.splitextある()が含ま」ファイル名の一部として ".partX.rar"のファイル名を使用しますが、ファイル拡張子の一部としてインクルードすることをお勧めします。

彼はそれを行うためにスクリプトを作成します(拡張子のリストやrarファイル用の完全に別々のスクリプトは必要ありません)。

ありがとうございます!

+0

ありがとう:

は、ここでそれを行うための一つの方法です!申し訳ありませんが、私は縮緬を示すために矢を使用しようとしました(しかし、私はかなり奇妙に見えました。これを私の注意に持ってくれてありがとう(私の悪い!)! = D –

+0

これはStackoverflowの仕組みであり、回答を受け入れないのは無礼ですが、あなたがそれを処理する方法を見つけたことがわかります。さらに、あなたは今すぐupvoteに必要な評判を持っています:) – JMax

+0

はい、私はちょうど答えを投票することとは別の "受け入れ"があることを理解していませんでした(私は正直なところ、失礼なことはまだありません)。再度、感謝します! = D –

答えて

2

os.path.splitext「。」を逆に検索します。見つかった最初の一致を返します。だから、あなたの必要とするものは、splitextの箱から外されます。ファイル名をトークン化するだけの場合は、ファイル名を分割して解析することをお勧めします。左辺を名前にして、右辺に再び参加します。

def split_name(file_name): 
    ''' 
    Returns root_filename, 'middle tokens', and extension 
    ''' 
    tokens = file_name.split('.') 

    return (tokens[0], ".".join(tokens[1:-1]), tokens[-1]) if len(tokens) >1 else file_name 

file_name = 'this.is.a.txt' 
split_name(file_name) 
#result is: 
>>>  ('this', 'is.a', 'txt') 
+0

ありがとう!申し訳ありませんが、私は縮緬を示すために矢を使用しようとしました(しかし、私はかなり奇妙に見えました。これを私の注意に持ってくれてありがとう(私の悪い!)! = D –

+0

私はスクリプトのために探している大きなものの一つで、 ".part"を含むことができない理由の一つは、名前からすべての "。"を取り除くことですパーツ(rarsのパーツのためにすべてのことを混乱させる)。だから、その名前はおそらく(最初に)たくさんの "。"を含んでいます。 –

+0

申し訳ありませんが、情報がほとんどここにあるように感じますが、私はこれを私が探しているものにかなり適応させることはできません。\ n –

関連する問題