摘要
比较两个文件并返回比较结果。“文件比较”可以报告两个 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 是默认文件类型。如果要输入二进制文件,则需将文件类型更改为二进制(Python 中的 BINARY)。
ASCII 文件错误比较时,系统将报告差异(如字符总数不同),并报告每行的差异。
二进制文件错误比较时,系统将报告文件大小不同,并报告每个字节的差异。
输出比较文件将包含输入基础文件和输入测试文件之间的所有异同点。该文件是一个以逗号分隔的文本文件,在 ArcGIS 中可以表的形式对其进行查看和使用。
在 Python 中使用此工具时,可通过 result.getOutput(1) 获取此工具的状态。未检测到差异时将显示 'true' 值;检测到差异时将显示 'false' 值。
语法
FileCompare_management (in_base_file, in_test_file, {file_type}, {continue_compare}, {out_compare_file})
参数 | 说明 | 数据类型 |
in_base_file | 将输入基础文件与输入测试文件进行比较。输入基础文件是指已被声明为有效的文件。此基础文件包含正确的内容和信息。 | File |
in_test_file | 将输入测试文件与输入基础文件进行比较。输入测试文件是指已通过编辑或编译新信息而进行更改的文件。 | File |
file_type (可选) | 进行比较的文件的类型。
| String |
continue_compare (可选) | 指示在遇到第一个不匹配项后是否继续比较所有属性。
| Boolean |
out_compare_file (可选) | 此文件将包含输入基础文件与输入测试文件之间的所有异同点。该文件是一个以逗号分隔的文本文件,在 ArcGIS 中可以表的形式对其进行查看和使用。 | File |
代码实例
FileCompare 示例(Python 窗口)
以下 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 工具示例(独立脚本)
如何在独立脚本中使用 FileCompare 工具的示例。
# Name: FileCompare.py
# Description: Compare two text files and return comparison result.
# 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 Exception as err:
print(err.args[0])
环境
此工具不使用任何地理处理环境