このコードは、現在のファイル名の詳細を使用して、「xレベルのファイルx」のように見えるようにフォルダの名前を変更します「フォルダxはxレベル深い」に設定されていますが、フォルダがすでに別のプロセスで開かれているというエラーが表示されます。上記のコメントは、私が今まで(成功なし)したことであり、残りは望みどおりに働くことです。内部のフォルダとファイルの名前変更
import os, re
def everydirectory(path):
for file in os.listdir(path):
file_w_path = os.path.join(path, file)
os.chdir(path)
if os.path.isdir(file_w_path):
os.chdir(file_w_path)
# complete_folder_name = re.search("(deep)([0-9])(FOLDER)([0-9])", file)
# deepness = complete_folder_name.group(2)
# folder_number = complete_folder_name.group(4)
# new_folder_name = "Folder {} at {} levels deep".format(folder_number, deepness)
# new_folder_name_w_path = os.path.join(path, new_folder_name)
# os.rename(file_w_path, new_folder_name_w_path)
# print("Folder " + file_w_path + " renamed to " + new_folder_name_w_path)
everydirectory(file_w_path)
elif os.path.isfile(file_w_path):
path = os.path.join(path, os.getcwd())
extension = os.path.splitext(file_w_path)[1]
complete_file_name = re.search("(deep)([0-9])(FILE)([0-9])", file)
deepness = complete_file_name.group(2)
file_number = complete_file_name.group(4)
new_file_name = "File {} at {} levels deep{}".format(file_number, deepness, extension)
new_file_name_w_path = os.path.join(path, new_file_name)
os.rename(file_w_path, new_file_name_w_path)
print("File " + file_w_path + " RENAMED TO " + new_file_name_w_path)
directory = input("Where is the files?")
everydirectory(directory)
私はこの問題は、プログラムが、それはファイルの元の場所を「失う」作り、フォルダの名前を変更した後、それはファイルの名前を変更していることだと思います。誰かが私が間違っていることを確認できますか?ありがとう!ここで
は、フォルダ/ファイルのセットであり、私はそれがスクリプトを実行した後に見てみたかった方法: https://drive.google.com/drive/u/1/folders/0B8pLYoI76JJiOEtpNzdaYVZrVXM
タスクの名前を変更するのこの種の一般的なアプローチは、底部から上方に動作するように再帰を使用することですディレクトリツリー。ディレクトリの内容の名前を変更し、親の内容の名前を変更します。 –
'everydirectory(file_w_path) 'の呼び出しの後にフォルダの名前を変更して、内部のファイルで完了させるようにしてください。あるいは、古いパスの代わりに名前付きパスを使って 'everydirectory(new_folder_name_w_path)'にするべきでしょうか? –
@ PM2Ringどのように再帰を使用できますか?私はあなたが最初に関数を使ってファイルの名前を変更してからフォルダの名前を変更したのと同じことをやってみましたが、同じエラーが出ます。私はos.walk(topdown = False)について読んでいますが、それを使う方法を忘れてはいけませんでした。これはあなたが話していることですか? – Setti7