これは現在私が使用しているものです:
import os, shutil
path = "/volume1/Users/Transfer/"
moveto = "/volume1/Users/Drive_Transfer/"
files = os.listdir(path)
files.sort()
for f in files:
src = path+f
dst = moveto+f
shutil.move(src,dst)
これで完全に機能します。これがお役に立てば幸いです。
編集:
これを関数に変換しました。これは、ソースおよび宛先ディレクトリーを受け入れ、宛先フォルダーが存在しない場合は宛先フォルダーを作成し、ファイルを移動します。また、srcファイルのフィルタリングも可能です。たとえば、画像のみを移動したい場合は、パターンを使用'*.jpg'
します。デフォルトでは、ディレクトリ内のすべてを移動します
import os, shutil, pathlib, fnmatch
def move_dir(src: str, dst: str, pattern: str = '*'):
if not os.path.isdir(dst):
pathlib.Path(dst).mkdir(parents=True, exist_ok=True)
for f in fnmatch.filter(os.listdir(src), pattern):
shutil.move(os.path.join(src, f), os.path.join(dst, f))
mv
コマンドに慣れている方のために、pythonにshutil.move
は、shutil.move
機能が異なる1つのエッジケースがあります。 詳細については、こちらをご覧ください。簡単に言うと、shutil.move
mv
宛先がディレクトリであり、そのディレクトリにソースと同じ名前のファイルがすでにある場合、Python は例外を発生させます(ただし、gnu-coreutils は発生しません)(詳細については、前の文で提供されているリンクを参照してください) )。