文件比较 (数据管理)

摘要

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

使用情况

  • 此工具将返回显示比较结果的消息。 默认情况下,在找到输入之间的第一个差异时,该工具将停止运行。 要报告所有差异,请选中继续比较参数。

  • 如果报告的输入数据集差异由记录的增加或删除导致,则仅报告的第一个差异有效。 在此工具遇到增加或删除的记录后,报告的所有差异均由比较错位导致。 比较工具在遇到新增或删除的记录后,不会尝试查找下一组匹配的记录。

  • 此工具可以报告两个 ASCII 文件或两个二进制文件之间的差异

  • 此工具支持对 ASCII 文件中的字符、词和文本行进行掩膜。 例如,如果不是包含表示创建日期和时间的文本,两个文件可能相同的。 这种差异会导致误比较。 此外,每个平台存储或处理数值的方式存在微小的差异。 这会导致不同平台间数值精度存在差异。 为了处理错误的字符比较,此工具提供了若干掩码功能。 将新文本文件与现有基础文件进行比较之前,可以对基础文件进行编辑以包括以下特殊掩膜符号。

    • “#”- 无论“#”符号出现在输入基础文件中的哪个位置,都将忽略输入测试文件中的相应字符。
      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 是默认文件类型。 将二进制文件用作输入时,请将文件类型参数更改为二进制

  • 当 ASCII 文件之间存在误比较时,该工具将报告差异,例如不同的字符总数以及每行的差异。

  • 当二进制文件之间存在误比较时,该工具将报告文件大小不同,并报告每个字节的差异。

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

  • Python 中使用此工具时,通过返回的 Result 对象(使用索引位置 1)获取比较状态。(result[1])。 此工具未检测到差异时将显示 'true' 值,检测到差异时将显示 'false' 值。

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

参数

标注说明数据类型
输入基础文件

将与输入测试文件参数值进行比较的文件。 此参数值是您已声明为有效的文件。 此基础文件包含正确的内容和信息。

File
输入测试文件

将与输入基础文件参数值进行比较的文件。 此参数值是因编辑或编译新信息而进行更改的文件。

File
文件类型
(可选)

指定将用于文件比较的类型。

  • ASCII文件将使用 ASCII 字符进行比较。 这是默认设置。
  • 二进制文件将使用二进制比较进行比较。
String
继续比较
(可选)

指定在找到输入之间的第一个差异后,是否继续比较。

  • 未选中 - 该工具将在找到第一个差异后停止。 这是默认设置。
  • 选中 - 该工具将在找到第一个差异后继续运行。

Boolean
输出比较文件
(可选)

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

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

File

派生输出

标注说明数据类型
比较状态

未找到差异时,比较状态将为 'true',找到差异时,比较状态将为 'false'

Boolean

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

这是将与 in_test_file 参数值进行比较的文件。 此参数值是您已声明为有效的文件。 此基础文件包含正确的内容和信息。

File
in_test_file

这是将与 in_base_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'

Boolean

代码示例

FileCompare 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 FileCompare 函数。

import arcpy
arcpy.management.FileCompare(
    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.management.FileCompare(base_file, test_features, 
                                              file_type, continue_compare, 
                                              compare_file)
print(compare_result)
print(arcpy.GetMessages())

环境

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

许可信息

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

相关主题