web-dev-qa-db-ja.com

Pythonを使用して、あるディレクトリから別のディレクトリにすべてのファイルを移動する

Pythonを使用して、すべてのテキストファイルを1つのフォルダーから別のフォルダーに移動します。私はこのコードを見つけました:

import os, shutil, glob

dst = '/path/to/dir/Caches/com.Apple.Safari/WebKitCache/Version\ 4/Blobs '
try:
    os.makedirs(/path/to/dir/Tumblr/Uploads) # create destination directory, if needed (similar to mkdir -p)
except OSError:
    # The directory already existed, nothing to do
    pass

for txt_file in glob.iglob('*.txt'):
    shutil.copy2(txt_file, dst)

Blobフォルダー内のすべてのファイルを移動する必要があります。エラーは発生していませんが、ファイルを移動していません。

23
malina

これを試して..

import shutil
import os

source = '/path/to/source_folder'
dest1 = '/path/to/dest_folder'


files = os.listdir(source)

for f in files:
        shutil.move(source+f, dest1)
44
Shivkumar kondi

あるフォルダから別のフォルダに「.txt」ファイルをコピーするのは非常に簡単で、質問にはロジックが含まれています。以下のように、不足している部分のみが正しい情報に置き換えられます。

import os, shutil, glob

src_fldr = r"Source Folder/Directory path"; ## Edit this

dst_fldr = "Destiantion Folder/Directory path"; ## Edit this

try:
  os.makedirs(dst_fldr); ## it creates the destination folder
except:
  print "Folder already exist or some error";

以下のコード行は、*。txt拡張子のファイルをsrc_fldrからdst_fldrにコピーします

for txt_file in glob.glob(src_fldr+"\\*.txt"):
    shutil.copy2(txt_file, dst_fldr);
4
ToUsIf

これでうまくいくはずです。また、shutilモジュールの documentation を読んで、ニーズに合った関数(shutil.copy()、shutil.copy2()、shutil.copyfile()またはshutil.move())を選択します。

import glob, os, shutil

source_dir = '/path/to/dir/with/files' #Path where your files are at the moment
dst = '/path/to/dir/for/new/files' #Path you want to move your files to
files = glob.iglob(os.path.join(source_dir, "*.txt"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dst)
2
Byakko_Haku

copytree 関数の実装を見てください:

  • 以下を使用してディレクトリファイルを一覧表示します。

    names = os.listdir(src)

  • 以下を使用してファイルをコピーします。

    for name in names: srcname = os.path.join(src, name) dstname = os.path.join(dst, name) copy2(srcname, dstname)

dstnameを取得する必要はありません。宛先パラメータがディレクトリを指定している場合、ファイルはdstsrcnameのベースファイル名を使用します。

copy2moveに置き換えます。

2