帮我修改正确,并列出完整代码
时间: 2023-08-11 22:44:18 浏览: 48
好的,下面是修改后的代码,已经适配Python 3:
```python
import arcpy
import os
def check_feature_class_fields(workspace, output_file):
def write_warning_to_file(warning_message):
with open(output_file, 'a', encoding='utf-8') as f:
f.write(warning_message + '\n')
arcpy.env.workspace = workspace
feature_classes = arcpy.ListFeatureClasses()
unqualified_count = 0
field_count = {}
for feature_class in feature_classes:
feature_class_path = os.path.join(workspace, feature_class)
fields = arcpy.ListFields(feature_class_path)
field_names = [field.name for field in fields]
with arcpy.da.SearchCursor(feature_class_path, ["OID@"] + field_names) as cursor:
for row in cursor:
oid = row[0]
for i, value in enumerate(row[1:], start=1):
if value is None or value == "":
field_name = field_names[i - 1]
warning_message = "Unqualified Feature Class: {} | Field Name: {} | Feature OID: {}".format(
feature_class,
field_name,
oid
)
arcpy.AddWarning(warning_message)
write_warning_to_file(warning_message)
unqualified_count += 1
if field_name in field_count:
field_count[field_name] += 1
else:
field_count[field_name] = 1
# Write the total count of unqualified cases to the output file.
with open(output_file, 'a', encoding='utf-8') as f:
f.write("Total Unqualified Cases Found: {}\n".format(unqualified_count))
f.write("Field-wise Unqualified Case Count:\n")
for field_name, count in field_count.items():
f.write("Field: {} | Count: {}\n".format(field_name, count))
workspace = arcpy.GetParameterAsText(0)
output_file_path_txt = "unqualified_data.txt"
check_feature_class_fields(workspace, output_file_path_txt)
```
在修改后的代码中,我们将`reload(sys)`和`sys.setdefaultencoding('utf-8')`删除了,而在文件读写时加上了`encoding='utf-8'`,以避免编码问题。此外,我们还将print语句改为了arcpy.AddWarning,方便使用ArcGIS中的Python Window查看警告信息。