使用 Python 将所有文件从一个目录移动到另一个目录

我想使用 Python 将所有文本文件从一个文件夹移动到另一个文件夹:

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文件夹中的所有文件。我没有得到一个错误,但它也没有移动文件。

171148 次浏览

这个应该能行。还要阅读 shutil 模块的 文件,以选择适合您需要的函数(shutil.copy ()、 shutil.cop2()、 shutil.copfile ()或 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)

试试这个:

import shutil
import os
    

source_dir = '/path/to/source_folder'
target_dir = '/path/to/dest_folder'
    

file_names = os.listdir(source_dir)
    

for file_name in file_names:
shutil.move(os.path.join(source_dir, file_name), target_dir)

请看一下 拷贝树函数的实现情况:

  • 列出下列目录文件:

    names = os.listdir(src)

  • 复制文件:

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

获取 Dstname是不必要的,因为如果目标参数指定了一个目录,那么文件将使用来自 姓氏的基本文件名复制到 Dst中。

让开代替 复制2

复制。」。“ 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);
import shutil
import os
import logging


source = '/var/spools/asterisk/monitor'
dest1 = '/tmp/'




files = os.listdir(source)


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


logging.basicConfig(filename='app.log', filemode='w', format='%(name)s
- %(levelname)s - %(message)s')


logging.info('directories moved')

一些带有日志特性的熟代码。您还可以使用 crontab 将其配置为在一段时间内运行。

* */1 * * * python /home/yourprogram.py > /dev/null 2>&1

每小时一班! 干杯

令人惊讶的是,这没有一个答案使用 pathilib,这是在 python 3.4 + 中引入的

此外,在 python3.6中更新了 shutil,以接受这个 PEP-0519中的 pathlib 对象的更多细节

Pathlib

from pathlib import Path


src_path = '\tmp\files_to_move'


for each_file in Path(src_path).glob('*.*'): # grabs all files
trg_path = each_file.parent.parent # gets the parent of the folder
each_file.rename(trg_path.joinpath(each_file.name)) # moves to parent folder.

Pathlib & shutil 复制文件。

from pathlib import Path
import shutil


src_path = '\tmp\files_to_move'
trg_path = '\tmp'


for src_file in Path(src_path).glob('*.*'):
shutil.copy(src_file, trg_path)

例如,如果我想移动所有。Txt 文件从一个位置到另一个位置(例如在 Windows 操作系统上)我会这样做:

import shutil
import os,glob


inpath = 'R:/demo/in'
outpath = 'R:/demo/out'


os.chdir(inpath)
for file in glob.glob("*.txt"):


shutil.move(inpath+'/'+file,outpath)
def copy_myfile_dirOne_to_dirSec(src, dest, ext):


if not os.path.exists(dest):    # if dest dir is not there then we create here
os.makedirs(dest);
        

for item in os.listdir(src):
if item.endswith(ext):
s = os.path.join(src, item);
fd = open(s, 'r');
data = fd.read();
fd.close();
            

fname = str(item); #just taking file name to make this name file is destination dir
            

d = os.path.join(dest, fname);
fd = open(d, 'w');
fd.write(data);
fd.close();
    

print("Files are copyed successfully")

使用 filter 移动文件(使用 Path、 os、 shutil 模块) :

from pathlib import Path
import shutil
import os


src_path ='/media/shakil/New Volume/python/src'
trg_path ='/media/shakil/New Volume/python/trg'


for src_file in Path(src_path).glob('*.txt*'):
shutil.move(os.path.join(src_path,src_file),trg_path)

试试这个:

 if os.path.exists(source_dir):
try:
file_names = os.listdir(source_dir)
if not os.path.exists(target_dir):
os.makedirs(target_dir)
for file_name in file_names:
shutil.move(os.path.join(source_dir, file_name), target_dir)
except OSError as e:
print("Error: %s - %s." % (e.filename, e.strerror))
else:
log.debug(" Directory not exist {}".format(source_dir))

此脚本在目录中查找 Docx 文件并为 Docx 文件创建文件夹并将它们移动到创建的目录中

import os
import glob
import shutil


docfiles=glob.glob("./**/*.docx" , recursive=True)
if docfiles:
docdir = os.path.join("./DOCX")
os.makedirs(docdir , exist_ok = True)
for docfile in docfiles:
if docfile in docdir:
pass
else:
shutil.move(os.path.join(docfile),docdir)
print("Files Moved")