我正在尝试编写一个脚本(python 2.7),它将使用正则表达式来识别文件夹中的特定文件并将它们移动到另一个文件夹。但是,当我运行脚本时,源文件夹将移动到目标文件夹而不仅仅是其中的文件。
import os, shutil, re
src = "C:\\Users\\****\\Desktop\\test1\\"
#src = os.path.join('C:', os.sep, 'Users','****','Desktop','test1\\')
dst = "C:\\Users\\****\\Desktop\\test2\\"
#dst = os.path.join('C:', os.sep, 'Users','****','Desktop','test2')
files = os.listdir(src)
#regexCtask = "CTASK"
print files
#regex =re.compile(r'(?<=CTASK:)')
files.sort()
#print src, dst
regex = re.compile('CTASK*')
for f in files:
if regex.match(f):
filescr= os.path.join(src, files)
shutil.move(filesrc,dst)
#shutil.move(src,dst)
所以基本上“test1”文件夹中的文件要移动到“test2”,但不是所有文件,只是开头包含“CTASK”的文件。
路径中的****是为了保护我的工作用户名。
对不起,如果它很乱,我还在尝试一些事情。
答案 0 :(得分:1)
您需要在每次循环迭代时将精确文件(f
)的路径分配给filescr
变量,但不是files
的路径(files
- 是{{ 1}}!)
尝试以下代码
list
答案 1 :(得分:0)
我想将以下文件夹:1.1、1.2、1.45、1.7移至名称为“ 1”的文件夹 我已经在下面发布了解决方案:
import shutil
import os
src_path = '/home/user/Documents/folder1'
dest_path='/home/user/Documents/folder2/'
source = os.listdir(src_path)
for folder in source :
#folder = '1.1 -anything'
newf = folder.split('.')[0]
#newf is name of new folder where you want to move
#change Folder name as per yourrequirement
destination = dest_path+newf
if not os.path.exists(destination):
os.makedirs(destination)
shutil.move(src_path+'/'+folder,destination) #change move to copy if you want to copy insted of moving
print 'done moving'