正規表現 - python ファイル名 拡張子



Pythonを使用してディレクトリ内の複数のファイルの名前を変更する (4)

このPythonスクリプトを使用して、ディレクトリ内の複数のファイルの名前を変更しようとしています。

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)
i = 1

for file in files:
    os.rename(file, str(i)+'.jpg')
    i = i+1

このスクリプトを実行すると、次のエラーが表示されます。

Traceback (most recent call last):
  File "rename.py", line 7, in <module>
    os.rename(file, str(i)+'.jpg')
OSError: [Errno 2] No such file or directory

何故ですか? この問題を解決するにはどうすればよいですか?

ありがとう。


Answer #1

@danielのコメントによると、os.listdir()はファイルの完全なパスではなく、ファイル名のみを返します。 os.path.join(path、file)を使用してフルパスを取得し、その名前を変更します。

import os
path = 'C:\\Users\\Admin\\Desktop\\Jayesh'
files = os.listdir(path)
for file in files:
   os.rename(os.path.join(path, file), os.path.join(path, 'xyz_' + file + '.csv'))

Answer #2

まず、このパスを現在の作業ディレクトリとして作成する必要があります。 簡単です。 残りのコードにはエラーはありません。

現在の作業ディレクトリにするには:

os.chdir(path)

Answer #3

名前を変更する際にパス全体を渡すのではなく、次のようにします。

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)


for index, file in enumerate(files):
    os.rename(os.path.join(path, file), os.path.join(path, ''.join(str(index), '.jpg')))

編集 :タボのおかげで、最初の解決策はファイルを現在のディレクトリに移動し、それを修正しました。


Answer #4

違いを表示したり、確認を求めたり、名前を変更したりするために、すばやく柔軟なスクリプトを作成しました。 実用的なソリューションが必要な場合は、このスクリプトをコピーして、ファイルの名前を変更するフォルダーに配置できます。 https://gist.github.com/aljgom/81e8e4ca9584b481523271b8725448b8

「関数の名前変更」を渡すことにより、現在のディレクトリ内のファイルの名前を変更します。各関数は変更を処理できます。 次に、各関数が行う変更を決定し、色を使用して違いを表示し、変更を実行するための確認を求めます。 pycharmで動作しますが、別のコンソールでテストしていません





rename