我是python的新手,我已经找到了大量关于编码和UnicodeEncodeError的问题和答案,但是我无法针对我的具体问题找出它,并不断地得到这个错误:"UnicodeEncodeError:'ascii‘编解码器不能在第7位置对字符u’\xf8 8‘进行编码:序数不在范围(128)“。我正在使用空闲的Python 2.7.12
我想对一组大约200个湖泊使用arcGis工具TopoToRaster。我有一个文件夹,包含200个文件夹(每个湖一个),在每个湖文件夹中有三个形状文件,名为lakename_P.shp (点),lakename_B.shp (多边形/边界)和lakename_L.shp (多边形/边界)。这些湖泊是丹麦湖泊,因此,几乎所有湖泊都在文件夹名称和shp名称中包含着奥、纳和(或)。
我正在使用for循环遍历单个文件夹,并以正确的功能类作为输入,为每个湖运行工具。
我找到了这段代码,它实际上适用于我的代码,但是我不能用它打印任何东西,而且我也意识到它的缺陷,所以我想避免它。
import sys
reload(sys)
sys.setdefaultencoding('utf8')其他解决方案在读取和写入文件时使用了.encoding,而我实际上并不这么做。
除了重新加载(Sys)之外,任何人都可以重新编写解决方案吗?也许我只需要把.encoding放在某个地方,但我真的不知道在哪里,怎么做。我非常感谢大家的帮助,但我想提到的是,我已经阅读了所有的和其他博客文章。
-*- coding: iso-8859-15 -*-
import arcpy
from arcpy import env
from arcpy.sa import *
path = "//projects/soer"
arcpy.env.workspace = path
arcpy.env.overwriteOutput = True
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
wss = arcpy.ListWorkspaces("*", "Folder")
wss.sort()
for ws in wss:
arcpy.env.workspace = ws
for polygon in arcpy.ListFeatureClasses(feature_type = "Polygon"):
myBoundary = polygon
for point in arcpy.ListFeatureClasses(feature_type = "Point"):
myPoint = point
for polyline in arcpy.ListFeatureClasses(feature_type = "Polyline"):
myContour = polyline
output = ws + '/' + 'ttr'
outTTR = TopoToRaster([TopoPointElevation([[myPoint, 'z']]),
TopoContour([[myContour, 'z']]),
TopoBoundary([myBoundary])], 2,
"#", "#", "#", "#", "NO_ENFORCE")
outTTR.save(output)发布于 2017-10-30 07:59:09
我终于自己解决了这个问题,事情就这么简单:
for polygon in arcpy.ListFeatureClasses(feature_type = "Polygon"):
myBoundary = polygon.encode('utf-8')
for point in arcpy.ListFeatureClasses(feature_type = "Point"):
myPoint = point.encode('utf-8')
for polyline in arcpy.ListFeatureClasses(feature_type = "Polyline"):
myContour = polyline.encode('utf-8')https://stackoverflow.com/questions/46973569
复制相似问题