span8
span4
嗨,
我想用一个python呼叫者来比较位于两个文件夹之间的文件(和它们的大小)。
我的想法将是使用python的来电者,这将使我的文件名,为每个文件夹列表中,然后使用Featuremerger按名称和大小由大小的文件名称的两个列表进行比较。
有任何想法吗?
Arthy
例如,使用此脚本PythonCaller创建两个文件夹路径被称为“_original_folder”和“_revised_folder”属性指定了三个属性列表(见下文),并增加了列表的输入功能。注:此脚本例子只是描述了一个可能的方式对所有文件的收集大小的文件夹下。它可能不是最适合你的最终目标。请适当修改。
#PythonCaller脚本示例类FileSizesComparer(对象)的:def输入(个体,特征):所有文件的两个文件夹下#收集的尺寸。originalSizes,revisedSizes = {},{}#{: }为i收集文件大小(originalSizes,feature.getAttribute(''u original''u folder'))收集文件大小(revisedSizes,feature.getAttribute(''u revised''u folder'))originalPaths=set(originalSizes.keys())revisedPaths=set(revisedSizes.keys()),枚举中的路径(originalPaths&revisedPaths):sizeDiff=revisedSizes[path]-originalSizes[path]feature.setAttribute(''u unchanged{%d}.filename'%i,path)feature.setAttribute(''u unchanged{%d}.size''u originalSizes[path])feature.setAttribute(''u unchanged{%d}.size''u revised'%i,ReviedSizes[路径])功能。i的setAttribute(''u unchanged{%d}.size'%i,sizeDiff),枚举中的path(reviedPaths-originalPaths):功能。i的setAttribute(''u added{%d}.filename'%i,path)功能。i的setAttribute(''u added{%d}.size'%i,reviedSizes[路径]),枚举中的路径(originalPaths-revisedPaths):feature.setAttribute('''u deleted{%d}.filename'%i,path)feature.setAttribute(''u deleted{%d}.size'%i,originalSizes[path])self.pyoutput(feature)#Helper函数:收集指定根文件夹下所有文件的大小。#参数-路径大小:字典{ : }#-absRoot:根文件夹的绝对路径#-relRoot:根文件夹的相对路径(默认为空)import os def collectFileSizes(pathToSize,absRoot,relRoot=''):对于os.listdir(absRoot)中的名称:absPath=os.path.join(absRoot,name)#文件或目录的绝对路径relPath=os.path.join(relRoot,name)#文件或目录的相对路径(如果不是os.path.islink(absPath):如果os.path.isfile(absPath):pathToSize[relPath]=os.path.getsize(absPath)否则:收集文件(pathToSize,absPath,relPath)#递归调用
“_unchanged {}”列表包含以下原件及修订后的文件夹中现有文件的信息。该列表由这四个成员组成。
“_added {}”列表包含仅在修订现有的文件夹中的文件信息(文件名和大小)。
“_deleted {}”列表包含仅在原始文件夹中的现有文件中的信息(文件名和大小)。
你好@阿尔西,感谢您的问题发布!
不要等待更多的蛇一样从Python的专家解答 - 但在此期间,你可能想看看目录和文件路径名读取器。它会抓住你的所有比较的目录和/或文件名和属性(如大小,所有者,创建日期等)。变形金刚像匹配器,变化检测器, 要么重复筛选器可用于对结果进行阅读后进行比较。
希望这可以帮助!
弥敦道
©2019安全亚搏在线软件公司|法律