2017-11-13 15 views
-1

私はPythonを初めて使用しています。Pythonを使用してファイル名に文字を挿入する

  • r_feature_info_call_home_cbr_16_6.xml
  • r_feature_info_flap_list_ts_cbr_16_6.xml私はすべて '_' ファイル名から除いて削除したい

だから、私のようなファイルのカップルを持っています最初の 'r'の後のものと '16_6'の前のもの

私はいくつかのコードを書こうとしています:

このコードでは、最初にすべてのアンダースコアを削除してから、2つの '_'を挿入しようとしています。次の行は私に無効な構文エラーを与えている

file_name = (file_name.replace("_", "")) 

:まで

コードが正常に動作します。ここでは、最初の 'r'の後に '_'を追加しようとしています。

私は間違っていますか?私がこれを達成できる他の方法はありますか?

+0

'何[1]'? 'replace'の結果を' new_file_name'と 'os.rename(file_name、new_file_name)'のように新しい変数に保存したいとします。ところで、ここで外側のかっこは重複しています: 'file_name =(file_name.replace(" _ "、" "))' – alfasin

+0

[:1]はインデックス0から1までを意味しませんか?はい、括弧は冗長です。また、あなたが言ったようにos.renameを実行すると、「No such file or directory」エラーが表示されます。 –

+0

「開始」とは何ですか? – alfasin

答えて

0

はここでの問題のいくつかは、私が見ることができます:

  • あなたfile_name変数(9行目)を上書きし、それはまだ、次の行(10行)上の元のファイル名が含まれていると仮定します。もう1つの中間変数を使用する
  • os.renameに電話すると、内線番号file_extが返ってきたのを忘れた。あなたは最初の議論でそれを必要とします - それは2番目の議論でそれを望むならばあなた次第です。
  • あなたは(あなたが処理したい場合もある)の成功に Noneを返し、失敗時に Exceptionを投げるために起こっている、 os.renameは何か面白いものを返すことを期待
  • あなたは.の後に括弧を使用することはできません、それはあなたの無効な構文です。
  • 最後に、_を再導入するための部分文字列を使用する考えは正しいですが、正確な位置を知ることができないため、最後の_の後の文字数が変化すると、ファイルの最後に難しい場合があります。

その他の注意:.xmlの拡張子を保持する場合は、ファイル名を分割する必要はありません。ここ

は、各セグメントの長さを想定せずに例を示します。

for f in flist: 
    elements = f.split("_") # make a list of elements without _ 
    elements.insert(1, "_") # reintroduce the first _ in the list 
    elements.insert(-1, "_") # reintroduce the last _ in the list 
    new_name = "".join(elements) # recreate a string 
    os.rename(f, new_name) 
+0

ありがとうございます。これは私が欲しかったものです。私は 'No such file or directory'というエラーが出ますが、os.renameの絶対パスを使用して修正することができました。 –

関連する問題