You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArcGIS Pro升级到2.8.3后Arcpy脚本报TypeError预期字符串或字节类对象错误如何调试

问题根因
  • 缺失必要依赖导入:原脚本未显式导入os、arcpy两个核心库,旧版ArcGIS运行环境可能存在隐式加载逻辑,升级到2.8.3后该逻辑失效,导致调用相关方法时触发类型错误
  • TAB文件路径生成逻辑缺陷:原自定义的listToString函数用空格拼接文件名列表,当匹配到0个/多个符合要求的TAB文件时,会生成非法路径传入后续读取方法,直接触发类型错误;硬编码的Windows路径分隔符\\也存在跨环境兼容问题
  • ArcPy 2.8+参数校验升级:原脚本额外设置了不存在的环境变量arcpy.env.overwrite,旧版ArcPy会自动忽略无效参数,2.8+版本对参数合法性、类型的校验标准提升,会直接抛出类型错误
  • 相对路径识别不稳定:ArcPy调用工具时,传入的相对路径可能因工作空间配置异常无法被正确识别,导致参数类型不符合要求
修复后的完整代码
# 导入必要依赖库
import os
import arcpy
import geopandas as gpd

# 设置工作目录为脚本所在文件夹
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
ProjectFolder = dname

# 匹配TAB文件,增加合法性校验
files = os.listdir(ProjectFolder)
Tabfile = [i for i in files if i.endswith('Site Boundary.TAB')]
# 校验匹配结果
if len(Tabfile) == 0:
    raise FileNotFoundError("未找到后缀为Site Boundary.TAB的文件")
elif len(Tabfile) > 1:
    raise ValueError("匹配到多个后缀为Site Boundary.TAB的文件,请检查文件夹内容")
# 生成合法TAB文件路径
TabfilePath = os.path.join(ProjectFolder, Tabfile[0])

# 导出TAB为shp
Tabdata = gpd.read_file(TabfilePath, driver="MapInfo File")
ShapefilePath = os.path.join(ProjectFolder, r"siteboundary.shp")
Tabdata.to_file(ShapefilePath)

# 配置arcpy环境,移除无效参数
arcpy.env.workspace = ProjectFolder
arcpy.env.overwriteOutput = True

# 多环缓冲区生成
distances = [200, 500, 1000, 2000]
bufferunit = "Meters"
# 传入绝对路径避免arcpy相对路径识别异常
input_shp = os.path.join(ProjectFolder, "siteboundary.shp")
output_shp = os.path.join(ProjectFolder, "sitebuffer.shp")
arcpy.analysis.MultipleRingBuffer(input_shp, output_shp, distances, bufferunit, "distance", "NONE")

# 输出结果提示
arcpy.AddMessage("转换完成,文件位于:" + ProjectFolder)
print("转换完成,文件位于:" + ProjectFolder)
运行验证步骤
  • 确认脚本所在文件夹下仅存在1个以Site Boundary.TAB结尾的文件
  • 运行前先激活你克隆的ArcGIS Pro 2.8专属Python环境,避免调用到其他未安装对应依赖的Python环境
  • 若仍有报错,可在脚本开头添加import sys; print(sys.executable),确认运行使用的Python环境与你安装arcpy、geopandas的环境一致

内容的提问来源于stack exchange,提问作者Muppidi Sahaja Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:06:01