文件比较 (数据管理)
摘要
比较两个文件并返回比较结果。“文件比较”可以报告两个 ASCII 文件或两个二进制文件之间的差异。
用法
-
此工具可返回显示比较结果的信息。默认情况下,该工具将在遇到第一个错误比较后停止执行。要报告所有差异,需将继续比较选项设置为“真”。
-
此工具支持对 ASCII 文件中的字符、词和文本行进行掩膜。例如,如果不是包含表示创建日期和时间的文本,文件可能都是相同的。因此,文件将错误比较。此外,每个平台存储或处理数值的方式存在微小的差异。这会导致不同平台间数值精度存在差异。如果 SunOS 平台报告的值为 415.999999999,Windows XP 平台则可能会报告 416.000000000。为处理错误字符比较,“文件比较”提供了若干掩膜功能。将新文本文件与现有基础文件进行比较之前,可以对基础文件进行编辑以包括以下特殊掩膜符号。
- “#”- 最简单的掩膜符号是“#”符号。无论 # 出现在输入基础文件中的哪个位置,都将忽略输入测试文件中的相应字符。
Base: Y delta = 9048.6# Test: Y delta = 9048.61
- “??”- 另一个掩膜工具是“??”符号组合。要对整个“词”进行掩膜,可在该词的开头添加“??”。
Base: Processing ??ESRI1/ARCIGDS/TESTRUN/CONV/ARCIGDS/CPXSHAPE.DGN Test: Processing ESRI2/ARCIGDS/TESTRUN/CONV/ARCIGDS/CPXSHAPE2.DGN
- “?!”- 单个令牌中可能会嵌入“.”(句点)。具有扩展名的文件名 streetnames.dbf 便是一个明显的示例。在某些情况下,您可能希望在进行令牌比较时忽略名称的某一部分(“.”之前或之后)。
Base: Master table is: streetnames?!.dbf Test: Master table is: streetnames
- “???”- 可用于对其后的整行内容进行掩模。
Base: ??? 8 4 1 0 14 10 Test: 12 8 2 1 16 12
- “#”- 最简单的掩膜符号是“#”符号。无论 # 出现在输入基础文件中的哪个位置,都将忽略输入测试文件中的相应字符。
-
ASCII 是默认文件类型。如果要输入 BINARY 文件,则需将文件类型更改为 BINARY。
-
ASCII 文件错误比较时,系统将报告差异(如字符总数不同),并报告每行的差异。
-
BINARY 文件错误比较时,系统将报告文件大小不同,并报告每个字节的差异。
-
输出比较文件将包含输入基础文件和输入测试文件之间的所有异同点。该文件是一个以逗号分隔的文本文件,在 ArcGIS 中可以表的形式对其进行查看和使用。
-
比较工具结果对象在未找到差异时将为“真”,在检测到差异时则为“假”。
语法
参数 | 说明 | 数据类型 |
in_base_file |
将“输入基础文件”与“输入测试文件”进行比较。“输入基础文件”是指已声明有效的文件。此基础文件包含正确的内容和信息。 | File |
in_test_file |
将“输入测试文件”与“输入基础文件”进行比较。“输入测试文件”是指已通过编辑或编译新信息而进行更改的文件。 | File |
file_type (可选) |
进行比较的文件的类型。
| String |
continue_compare (可选) |
指示在遇到第一个不匹配项后是否继续比较所有属性。
| Boolean |
out_compare_file (可选) |
此文件将包含“输入基础文件”与“输入测试文件”之间的所有异同点。该文件是一个以逗号分隔的文本文件,在 ArcGIS 中可以表的形式对其进行查看和使用。 | File |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 FileCompare 函数。
import arcpy arcpy.FileCompare_management(r'C:/Workspace/well_xycoordinates.txt', r'C:/Workspace/new_well_coordinates.txt', 'ASCII', 'CONTINUE_COMPARE', r'C:/Workspace/well_file_compare.txt' )
如何在独立脚本中使用 FileCompare 工具的示例。
# Name: FileCompare.py # Description: Compare two text files and return comparison result. # Author: ESRI # import system modules import arcpy try: # Set local variables base_file= "C:/Workspace/well_xycoordinates.txt" test_file= "C:/Workspace/new_well_coordinates.txt" file_type = "ASCII" continue_compare = "CONTINUE_COMPARE" compare_file = "C:/Workspace/well_file_compare.txt" # Process: FeatureCompare compare_result = arcpy.FileCompare_management(base_file, test_features, file_type, continue_compare, compare_file) print compare_result print arcpy.GetMessages() except: # Print error message if an error occurs print arcpy.GetMessages()