返回

排序-python-1中有2个问题,优化一个焦油提取函数/合并2个函数

发布时间:2022-06-29 03:54:58 413
# node.js

首先,我试图了解是否有可能优化这段代码

import tarfile
import os

def members(tf, parent_path, dest_path, type): #type is used to determine if i am looking for a single file or a whole folder
    l = len(parent_path)
    for member in tf.getmembers():
        if type == "file":
            if "champion.json" in member.name:
                member.path = os.path.join(dest_path, member.path[l:])
                yield member
        if type == "folder":
            if member.path.startswith(parent_path):
                member.path = os.path.join(dest_path, member.path[l:])
                yield member


with tarfile.open("Data\\tar\\dragontail.tgz") as tar:
    tar.extractall(members=members(tar, 'img/champion/splash/', 'Data\\tar\\new\\splash', "folder"))
    tar.extractall(members=members(tar, 'img/champion/loading/', 'Data\\tar\\new\\loading', "folder"))
    tar.extractall(members=members(tar, 'img/champion/centered/', 'Data\\tar\\new\\centered', "folder"))
    tar.extractall(members=members(tar, '12.11.1/data/en_US/', 'Data\\tar\\new\\', "file"))

因此,我要做的是打开我的tar文件并搜索我需要的文件/文件夹,但就我所知,每次搜索某个内容时,我都在搜索所有的tar文件,难道不可能搜索一次并提取匹配项吗?这不是更有效率吗?

在我的第二个问题中,我试图找出是否有可能将上述代码与此合并

import os
import shutil
import glob
from os import path
from Champions import Champion_list

def img_move(format):
    parent_path = "Data\\tar\\new\\"+format+"\\"
    dest_path = "Data\\Champions"

    for Champ in Champion_list:
        for img in glob.glob(parent_path+Champ+'*'):
            File = path.basename(img)
            Champ_dest = os.path.join(dest_path,Champ)
            #Full_dest = os.path.join(dest_path,Champ, format)
            Full_dest = os.path.join(Champ_dest, format)

            if not path.exists(Champ_dest):
                os.mkdir(Champ_dest)
            if not path.exists(Full_dest):
                os.mkdir(Full_dest)    

            print(img, os.path.join(Full_dest, File))
            shutil.move(img, os.path.join(Full_dest, File))

img_move("splash")
img_move("loading")
img_move("centered")

在这里,我基本上只是对我提取的文件进行排序,然后将它们移到我需要它们的地方。这可能看起来有点不确定,但我在这里做的要点是,我得到了一个文件夹,其中充满了不同冠军的图片,我需要将它们排序到其他类似这样嵌套的文件夹中

Data
   Champions
      (champion name matching the image name)
         folder (name matching the original style of img splash/loading/centered

是否可以合并这两个函数,以便在提取的同时进行排序,这样做是否值得?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
下一篇
编码器 VHDL - 验证和模型模拟 2022-06-29 01:34:33