文件比较 (数据管理)

描述

比较两个文件并返回比较结果。

使用方法

  • 此工具将返回显示比较结果的消息。默认情况下,此工具将在遇到第一个比较不匹配后停止执行。要报告所有差异,请选中继续比较参数。

  • 文件比较可以报告两个 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' 值。

    了解有关在 Python 中使用工具的详细信息

语法

arcpy.management.FileCompare(in_base_file, in_test_file, {file_type}, {continue_compare}, {out_compare_file})
参数说明数据类型
in_base_file

输入基础文件输入测试文件进行比较。输入基础文件是指已被声明为有效的文件。此基础文件包含正确的内容和信息。

File
in_test_file

输入测试文件输入基础文件进行比较。输入测试文件是指已通过编辑或编译新信息而进行更改的文件。

File
file_type
(可选)

进行比较的文件的类型。

  • ASCII使用 ASCII 字符进行比较。这是默认设置。
  • BINARY执行二进制比较。
String
continue_compare
(可选)

指示在遇到第一个不匹配项后是否继续比较所有属性。

  • NO_CONTINUE_COMPARE在遇到第一个不匹配项后停止比较。这是默认设置。
  • CONTINUE_COMPARE在遇到第一个不匹配项后继续比较其他属性。
Boolean
out_compare_file
(可选)

此文件将包含输入基础文件输入测试文件之间的所有异同点。该文件是一个以逗号分隔的文本文件,在 ArcGIS 中可以表的形式对其进行查看和使用。

File

派生输出

名称说明数据类型
compare_status

未检测到差异时比较状态将为 'true';检测到差异时比较状态将为 'false'

布尔型

代码示例

FileCompare 示例 1(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 示例 2(独立脚本)

如何在独立脚本中使用 FileCompare 工具的示例。

# Name: FileCompare.py
# Description: Compare two text files and return comparison result.
# import system modules 
import arcpy
# 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())

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题