“比较文件和文件夹之间的大小”的注释和答案 https://knowledge.亚搏在线safe.com/questions/63134/compare-file-and-sizes-between-folders.html 关于“比较文件和文件夹之间的大小”问题的最新评论和答案 答案由markatsafe亚搏在线 https://knowledge.亚搏在线safe.com/answers/86673/view.html

@tosinbabs @jdh将看起来像这样(2018.1): FileChangeDetector.fmw < / > < / p > < / div > 2019年2月8日星期五20:12:29 GMT markat亚搏在线safe 由tosinbabs评论tosinbabs的答案 https://knowledge.亚搏在线safe.com/comments/86516/view.html

@takashi我有同样的问题,我在网上找到了这篇文章,你能给我一个更好的解释如何修改这段代码并进行测试吗?我需要比较文件大小或升级前和升级后的输出文件。< / p > < / div > 2019年2月6日星期三21:04:48 GMT tosinbabs 阿西评论阿西的回答 https://knowledge.亚搏在线safe.com/comments/63229/view.html 感谢 @takashi < / > < br > 2018年2月1日星期四23:37 GMT arthy david_r评论david_r的回答 https://knowledge.亚搏在线safe.com/comments/63154/view.html 同意了,简单得多。 2018年2月1日星期四08:08:38格林尼治时间 david_r 答案由隆 https://knowledge.亚搏在线safe.com/answers/63151/view.html

例如,使用此脚本的PythonCaller从名为“_original_folder”和“_ed_folder”的属性指定的两个文件夹路径中创建三个列表属性(见下面),并将列表添加到输入特性中。注意:这个脚本示例只是描述一种收集文件夹下所有文件大小的可能方法。这可能不是你最终目标的最佳选择。请适当修改。

# PythonCaller Script Example class FileSizesComparer(object): def input(self, feature): #收集两个文件夹下所有文件的大小。原始尺寸,修改尺寸= {},{}# {<相对文件路径>:& lt; size>} collectFileSizes (originalSizes feature.getAttribute (_original_folder)) collectFileSizes (revisedSizes, feature.getAttribute (_revised_folder)) originalPaths =组(originalSizes.keys ()) revisedPaths =组(revisedSizes.keys())对我来说,路径枚举(originalPaths & revisedPaths): sizeDiff = revisedSizes(路径)——originalSizes(路径)feature.setAttribute (“_unchanged {% d}。setattribute (' _{%d})。说明:size_original' % i, originalsize [path])特性。说明:size_modified ' % i, edsize [path])特性。对于i, path in enumerate(edpaths - originalPaths): features . setattribute ('_add {%d})。文件名' % i,路径)功能。setattribute ('_added{%d}。for i, path in enumerate(originalPaths - edpaths): features . setattribute ('_deleted{%d})。setattribute ('_deleted{%d})。size' % i, originalSizes[path]) self.pyoutput(feature) # Helper function: Collect sizes of all files under a specified root folder. # Arguments # - pathToSize: dictionary {<relative file path> : <size>} # - absRoot: absolute path of the root folder # - relRoot: relative path of the root folder (empty by default) import os def collectFileSizes(pathToSize, absRoot, relRoot=''): for name in os.listdir(absRoot): absPath = os.path.join(absRoot, name) # absolute path of file or directory relPath = os.path.join(relRoot, name) # relative path of file or directory if not os.path.islink(absPath): if os.path.isfile(absPath): pathToSize[relPath] = os.path.getsize(absPath) else: collectFileSizes(pathToSize, absPath, relPath) # recursive call 

"_unchanged{}" list contains the information on files existing under both original and revised folders. The list consists of these four members.

"_added{}" list contains the information (filename and size) on files existing only under revised folder.

"_deleted{}" list contains the information (filename and size) on files existing only under original folder.

2018年2月1日星期四06:01:44 GMT 答案由arthy https://knowledge.亚搏在线safe.com/answers/63147/view.html

Thanks @NathanAt亚搏在线Safehttps://knowledge.亚搏在线safe.com/answers/63136/view.html

Hi @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

确实需要等待来自Python专家的更多类似蛇的答案—但同时您可能希望查看
目录和文件路径名阅读器。它将抓取您的所有目录和/或文件名和属性(如大小、所有者、创建日期等),以便您进行比较。变形金刚像< a href = " https://docs.safe.com/fme/亚搏在线html/FME_Desktop_Documentation/FME_Transformers/Transformers/matcher.htm " target = "平等" >匹配器< / >、< a href = " https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Transformers/Transformers/changedetector.htm " target = "平等" > ChangeDetector < / >,或者DuplicateFilter可以用来比较阅读后的结果。< br > < br >希望这有助于! Nathan < / p > < br > 2018年1月31日星期三21:13格林尼治时间 nathanat亚搏在线safe 答案由jdh https://knowledge.亚搏在线safe.com/answers/63135/view.html

并不是说您不能使用python,而是为什么不简单地使用目录和文件路径名阅读器,将检索文件属性设置为Yes,然后使用一个ChangeDetector.

2018年1月31日星期三21:08:46 GMT jdh