web-dev-qa-db-ja.com

Pythonを使用してファイルの名前を変更する方法

a.txtb.kmlに変更したいです。

257
zjm1126

os.rename を使います。

import os

os.rename('a.txt', 'b.kml')
453
YOU

ファイルはディレクトリの中にあるかもしれません、その場合そのパスを指定してください:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
49
Abdul Razak
import shutil

shutil.move('a.txt', 'b.kml')

これはファイルの名前を変更したり移動するのに役立ちます。

43
Andy Balaam

Python 3.4では、これを解決するために pathlib モジュールを使うことができます。

もしあなたがたぶん古いバージョンを使っているなら、ここで見つけたバックポートされたバージョン を使うことができます

あなたがルートパスにいないと仮定しましょう(それにちょっと困難を加えるためだけに)あなたは名前を変更したいと思い、そしてフルパスを提供しなければなりません、これを見ることができます:

some_path = 'a/b/c/the_file.extension'

それで、あなたはあなたのパスを取り、それからPathオブジェクトを作成することができます:

from pathlib import Path
p = Path(some_path)

私たちが今持っているこのオブジェクトに関するいくつかの情報を提供するために、それから物事を抽出することができます。たとえば、何らかの理由でファイル名をthe_fileからthe_file_1に変更してファイル名を変更したい場合は、ファイル名の部分を取得できます。

name_without_extension = p.stem

それでも拡張機能を手に持ってください。

ext = p.suffix

単純な文字列操作で修正を実行できます。

new_file_name = "{}_{}".format(name_without_extension, 1)

そして、作成したパスオブジェクトに対してrenameメソッドを呼び出し、必要な適切な名前変更構造を完成させるためにextを追加することで、名前変更を実行できます。

p.rename(Path(p.parent, new_file_name + ext))

もっと簡単にその単純さを紹介します。

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.suffix))
16
idjaw

os.rename(old, new)

これはPythonのドキュメントにあります。 http://docs.python.org/library/os.html

15
Joe

os.renameを使用してください。しかし、両方のファイルのフルパスを関数に渡す必要があります。私のデスクトップにa.txtというファイルがあるのであればそうするでしょうし、また名前を変更したファイルも全部与えなければなりません。

 os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
5
rajput56
import os

# Set the path
path = 'a\\b\\c'  
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in 
os.chdir(saved_cwd)
3
Tilak

タスクを実行するためにos.systemを使ってterminalを呼び出すことができます。

os.system('mv oldfile newfile')
1
user5449023
    import os
import re
from pathlib import Path

for f in os.listdir(training_data_dir2):
  for file in os.listdir( training_data_dir2 + '/' + f):
    oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
    newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
    p=oldfile
    p.rename(newfile)
0
issam
import shutil
import os

files = os.listdir("./pics/") 

for key in range(0, len(files)):
 print files[key]
 shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")

これでうまくいくはずです。 Python 3+

0
Naveen