我想使用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
文件夹中的所有文件。我没有收到错误,但它也没有移动文件。
答案 0 :(得分:38)
试试这个..
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)
答案 1 :(得分:6)
使用python 3.4
+
此外,shut在python 3.6
中进行了更新,以接受pathlib对象,详情请参见此PEP-0519
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.
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)
答案 2 :(得分:4)
将“.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);
答案 3 :(得分:3)
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
每小时运行一次!欢呼
答案 4 :(得分:2)
这应该可以解决问题。另请阅读shutil模块的http://jsfiddle.net/b2rd7ps8/1/以选择适合您需要的函数(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)
答案 5 :(得分:1)
请看一下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 是没有必要的,因为如果destination参数指定目录,则使用 srcname dst 中>
通过移动替换 copy2 。
答案 6 :(得分:1)
试试这个:
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))
答案 7 :(得分:0)
例如,如果我想将所有.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)
答案 8 :(得分:0)
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")
答案 9 :(得分:0)
使用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)