41056


今まで`.dat`で何も考えずファイルを作って来たのですが、  
今回、一部の拡張子を一気に`.gui`という形に変えたいと  
考えています。  
1.os.listdir()でファイルの名前を全てゲット。  
2.endswith(".dat")あるいは、正規表現にマッチするものを、  
".gui"に書き換える。  
しらみつぶしにかえようとすると、  
ファイルが使えなくなるという注意書きが出ましたが、  
問題なく使えるようなので、この際一気に書き換えられる  
手段を知りたいと思いました。  

[code]

    import os
    current = os.path.join(os.getcwd(),"widgets_data")
    listdir = os.listdir(current)
    import re
    dat_to_gui = re.compile(".*\.gui")
    
    for i in listdir:
        if i.endswith(".dat"):
            new = i.replace(".dat",".gui")
            listdir.remove(i)
            listdir.append(new)
    
[/code]

これだと、listdir関数の中は確かに、  
.gui拡張子になるのですが、元のファイルの中身は  
全く変わっていません。

ピリオドは拡張子部分にしかないので、  
他の部分が書き換わることはないと考えてよいと  
思います。ファイルの内容を変えないように、  
ファイルの名前だけを書き換えられる方法を  
教えていただきたい。  
なんか簡単な気がするけど、そうでもない  
気も致しますが、お願いします。


CC BY-SA 3.0
2018-01-18T06:51:22.123
41054
2018-01-18T07:28:13.990
24284
question
python
特定のフォルダの中にあるファイルの拡張子を一気に書き換えたい。


<https://stackoverflow.com/questions/225735/batch-renaming-of-files-in-a-
directory>

にたくさん回答がありました。

<https://stackoverflow.com/a/7917798/1979953>  
を要件の拡張子に合うようにしたものが下記です。（リンク先にも書いてありますが、カレントディレクトリのみです）

[code]

    import os
    [os.rename(f, f.replace('.dat', '.gui')) for f in os.listdir('.') if not f.startswith('.')]
    
[/code]

  
  
補足：試してないですが  
<https://stackoverflow.com/a/227125/1979953>  
のがやれることは多そうです。


CC BY-SA 3.0
2018-01-18T07:21:29.000
41056
2018-01-18T07:28:13.990
2018-01-18T07:28:13.990
9008
9008
41054
answer