我正在尝试编写一个脚本(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)
Run Code Online (Sandbox Code Playgroud)
所以基本上“test1”文件夹中有我想移动到“test2”的文件,但不是所有的文件,只是那些在开头包含“CTASK”的文件。
路径中的****是为了保护我的工作用户名。
对不起,如果它很乱,我仍在尝试一些东西。
您需要在每次循环迭代时将精确文件 ( f) 的路径分配给filescr变量,而不是files( files- 是list!)
试试下面的代码
import os
from os import path
import shutil
src = "C:\\Users\\****\\Desktop\\test1\\"
dst = "C:\\Users\\****\\Desktop\\test2\\"
files = [i for i in os.listdir(src) if i.startswith("CTASK") and path.isfile(path.join(src, i))]
for f in files:
shutil.copy(path.join(src, f), dst)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26115 次 |
| 最近记录: |