どのように、私は一度にPythonを使っている複数のファイルを改名しますか


背景物語


このブログでは、Pythonプログラミングを使用して、単一のクリックで複数のファイルを変更する方法を学びます.通常、このタスクを行うにはあまりにも多くの時間とビットフラストレーション作業、私は1日で315ファイルを改名する必要が直面していると同じことを取る!名前を変更するだけでなく、ファイル名の名前を変更する必要があります.はい、私はすべてのファイルの内容をチェックする必要があります、私は自分の名前を変更しようとしているキーワードがそのファイルに存在するかどうかチェックする必要があります.本当にこれは私にとってはとても退屈な仕事でしたが、ファイルの名前を変更したり、Pythonプログラミングを使ってファイル内のキーワードを置き換えることでスマートワークをすることにしました.
私はこのタスクを行うためにPythonプログラミングを選択する方法を参照してくださいと私は私が30分以内にそのタスクを完了していたと言うかどうかは信じられないだろう(プログラミングロジックのための20分+エラーと実践を解決するための10分).
その前に、コードを効果的に理解するのに役立つように、いくつかのことを理解する必要があります.

oslistdir ()


listdirは、この関数の引数として提供される特定のパス内に存在するファイル名とディレクトリ名/フォルダ名を返す関数です.間違いなく、あなたはすでに、私は直接コーディング部分と構文に移動しますので、how to install Python and run Python programアイディアを持っている.
ここでは、listdir ()メソッドを使用する構文を示します:
import os 
path = "/path/to/your/directory"
os.listdir(path)
この構文パスでは、ディレクトリへのパスとなります.Windowsオペレーティングシステムを使用している場合は、次のようになります.
path = "C:\something\like\this"
または他のLinuxディストリビューションを使っているなら、以下のようになります.
path = "/something/like/this"
oslistdir(path)は、そのパスまたは場所に存在するファイルとフォルダの名前を含む配列を返します.参考までに、出力ウィンドウ(ターミナル)のスナップショットがいくつかありました.

Pythonの正規表現モジュール


正規表現を使用すると、ファイル名/ディレクトリまたは特殊な文字形式を使用してファイルの内容から、正確なキーワードに一致するのに役立ちます.Pythonでは、正規表現に基づいて様々な機能を実行するのに役立つREモジュールがあります.それはあまりにも多くの組み込みメソッドを提供しています.

REのいくつかの方法.
また、あまりにも多くの他のメソッドが利用可能です.興味があり、REとその方法についてもっと知りたいなら、official documentation of reモジュールをお勧めします.

再split ()


Python module split ()メソッドの正規表現で説明したように、分割文字列を含むpatternとreturn listオブジェクトの出現によって文字列を分割するために使用されます.
は、アンダースコアパターンにマッチして文字列を単語に分割する方法を見ることができます.
import re
text = "The_Sky_Is_Blue"
split_words = re.split("_+", text) 
print(split_words)

osrename ()


もう一つで最後のメソッド、rename ()、このメソッドに引数として提供したパスに存在するファイル名またはディレクトリ名を最後に名前を変更するのに役立つでしょう.
rename ()メソッドは2つの引数をとります:
os.rename(src, dst) 

#src: source path as original name to file or directory 
#dst: destination path as new name to file or directory
ビット混乱!😵‍💫 実際の例を見てみましょう.
私たちは/example/oldの中に存在するファイルを改名したいです.新しい名前によるtxt新しい.txt
import os

os.rename("/home/username/example/old.txt","/home/username/example/new.txt")

print "Renamed successfully"

# If you don't believe, check file name at that location :) 

Pythonを使用して複数のファイル名をエンコード/エンコードする


今、最終的に我々は基本的な概念を持っている場所で、我々は一度に複数のファイルを名前を変更する実際のコードを書くつもりです!
参考のコードを示します.🎉
import os
import re

#rename file name
def main():
    path = "/home/username/example/"
    for filename in os.listdir(path):
        keyword = re.split('_+', filename)
        print(keyword)
        if keyword[1] == "one.txt":
            keyword[1] = "1.txt"

        elif keyword[1] == "two.txt":
            keyword[1] = "2.txt"

        elif keyword[1] == "three.txt":
            keyword[1] = "3.txt"

        elif keyword[1] == "four.txt":
            keyword[1] = "4.txt"

        elif keyword[1] == "five.txt":
            keyword[1] = "5.txt"


        renamedFile = '_'.join(map(str, keyword))
        source = path + filename
        destination = path + renamedFile
        os.rename(source, destination)
        print("Renamed Successfully")

if __name__ == '__main__':
    main()

この例では、encodingというものを行いました.私は様々なファイル名で繰り返されるキーワードがあります、そして、キーワードが2回、3回起こるか、100回であるかもしれないように、私は他のキーワードでそのキーワードをコード化しなければなりませんでした!しかし、我々はシングルクリックでこれらの多くのファイルをエンコードします.

ディレクトリ内の複数のファイルの中にキーワードを置換/エンコードする


今まで我々はちょうどファイル名をエンコードしているが、今では、特定のキーワードでこれらのファイルの内容を変更する必要があります.私たちは、ファイル内容を変えるか、特定の語でコード化キーワードを言うために働くもう一つの機能を加えます.
以下のようになります.
oldKeyword = ["one", "two", "three", "four", "five"]
newKeyword = ["1", "2", "3", "4", "5"]

#replace or encode content of file
def modifyFileContent(destination):
    with open(destination, 'r+') as f:
        for i in range(len(oldKeyword)):
            if newKeyword[i] in destination:
                text = f.read()
                text = re.sub(oldKeyword[i], newKeyword[i], text)
                f.seek(0)
                f.write(text)
                f.truncate()
上記のコードでは、先のコードで名前を変更したファイルまたはパスoへのパスが行先になります.

いくつかのファンシーなものと完全なコード


我々のコードでは、進行状況バーを追加して、ファイル名とその内容の変更を見ることができます.
この前にPIPを使用して進捗パッケージをインストールする必要があります.
pip install progress
以下が完全なコードです.
import os
import re
from progress.bar import Bar

bar = Bar('Processing', max=5)

#rename file name
def main():
    path = "/home/username/example/"
    for filename in os.listdir(path):
        keyword = re.split('_+', filename)
        print(keyword)
        if keyword[1] == "one.txt":
            keyword[1] = "1.txt"

        elif keyword[1] == "two.txt":
            keyword[1] = "2.txt"

        elif keyword[1] == "three.txt":
            keyword[1] = "3.txt"

        elif keyword[1] == "four.txt":
            keyword[1] = "4.txt"

        elif keyword[1] == "five.txt":
            keyword[1] = "5.txt"


        renamedFile = '_'.join(map(str, keyword))
        source = path + filename
        destination = path + renamedFile
        os.rename(source, destination)
        print("Renamed Successfully")
        modifyFileContent(destination)

oldKeyword = ["one", "two", "three", "four", "five"]
newKeyword = ["1", "2", "3", "4", "5"]

#replace or encode content of file
def modifyFileContent(destination):
    with open(destination, 'r+') as f:
        for i in range(len(oldKeyword)):
            if newKeyword[i] in destination:
                bar.next()
                text = f.read()
                text = re.sub(oldKeyword[i], newKeyword[i], text)
                f.seek(0)
                f.write(text)
                f.truncate()

if __name__ == '__main__':
    main()
    bar.finish()

結論


このポストでは、ディレクトリ内に存在するファイルのファイル名の名前を変更またはエンコードする方法を学びました.また、特定のキーワードでファイルの内容をエンコードする方法を学びました.

Thanks for reading this post and hope this would definitely help you reduce manual efforts to rename multiple files and encode the content of the files.

Please reach out to me for suggestions and post your feedback in comment section and tell me your story about the problem solving trick you applied in your work. If you have any suggestion for the next article please post that in comment box.


場合は、この記事は、お友達や同僚と共有してください有用な発見!❤️
記事を読む➡️
フォローミーオン⤵️
🌐
🌐 Github