[英]Python Move Files Based On Name
值得稱贊的是,我當前正在使用的代碼來自cji的響應。
我試圖遞歸地從源文件夾中拉出所有文件,並將它們從文件名前五個字符0:5
移到文件夾中
我的以下代碼:
import os
import shutil
srcpath = "SOURCE"
srcfiles = os.listdir(srcpath)
destpath = "DESTINATION"
# extract the three letters from filenames and filter out duplicates
destdirs = list(set([filename[0:5] for filename in srcfiles]))
def create(dirname, destpath):
full_path = os.path.join(destpath, dirname)
os.mkdir(full_path)
return full_path
def move(filename, dirpath):
shutil.move(os.path.join(srcpath, filename)
,dirpath)
# create destination directories and store their names along with full paths
targets = [(folder, create(folder, destpath)) for folder in destdirs]
for dirname, full_path in targets:
for filename in srcfiles:
if dirname == filename[0:5]:
move(filename, full_path)
現在,使用下面的代碼更改srcfiles = os.listdir(srcpath)
和destdirs = list(set([filename[0:5] for filename in srcfiles]))
可以為我提供一個變量的路徑以及變量的前五個字符文件名中的另一個。
srcfiles = []
destdirs = []
for root, subFolders, files in os.walk(srcpath):
for file in files:
srcfiles.append(os.path.join(root,file))
for name in files:
destdirs.append(list(set([name[0:5] for file in srcfiles])))
我將如何修改原始代碼以使用此代碼...或者如果有人對我將如何執行此操作有更好的想法。 謝謝。
我無法真正輕松地對其進行測試,但是我認為這段代碼應該可以工作:
import os
import shutil
srcpath = "SOURCE"
destpath = "DESTINATION"
for root, subFolders, files in os.walk(srcpath):
for file in files:
subFolder = os.path.join(destpath, file[:5])
if not os.path.isdir(subFolder):
os.makedirs(subFolder)
shutil.move(os.path.join(root, file), subFolder)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.