Vielleicht finde ich ja hier die Antwort auf die Frage mit der ich mich nun schon ewig ärgere.
Ich habe über das arcpy.Modul *.xls und *.csv Tabellen einer *.dbf Tabelle erstellt, das Python Skript ist in UTF-8 kodiert. Die Umlaute passen im Excel Format wunderbar. Im CSV Dokument jedoch sehen diese immer furchtbar aus, anscheinend funktioniert die Kodierung hier nicht. Wenn ich manuell , außerhalb des Programmes , den Namen der Dokumente von *.xls auf *.csv ändere, stimmen die Umlaute jedoch.
Kann man die *.csv Dokumente evt noch einmal Kodieren oder gibt es hier eine Lösung für das Umlautproblem?
Mein zweites Problem ist, dass wenn ich das Skript im gleichen Ordner die Outputs generieren lasse, gibt es mir, obwohl ich
-----------* arcpy.env.overwriteOutput = True *----------------
für das Skript festgelegt haben nur bei den *.csv Dateien immer den Error:
arcgisscripting.ExecuteError: ERROR 000210: Ausgabe C:/Users/___/Desktop/091218_BLP/20170822\FNP.csv kann nicht erstellt werden.
Fehler beim Ausführen von (TableToTable).
Code: Alles auswählen
__author___ = ' '
__copyright__ = ' '
# coding = utf-8
import arcpy
import sys,os
import time
from datetime import date
reload(sys)
sys.setdefaultencoding('utf-8')
arcpy.env.overwriteOutput = True
folder = os.path.dirname(__file__)
arcpy.env.workspace = folder
for mxd_file in arcpy.ListFiles("*.mxd"):
gdb_file = os.path.splitext(mxd_file)[0]+".gdb"
print gdb_file
time = str(date.today()).replace("-","")
workspace = folder + "/" + gdb_file
print "Folder_________",workspace
arcpy.env.workspace = workspace
new_folder = os.path.dirname(__file__) + "/" + time
if not os.path.exists(new_folder):
os.makedirs(new_folder)
wanted_field = "Bearbeitung"
sql= str(wanted_field) + " > ' ' AND " + str(wanted_field) + " IS NOT NULL"
featureclass = arcpy.ListFeatureClasses()
print featureclass , "ist als FC in der .gdb enthalten"
for name in featureclass:
for fc in arcpy.ListFeatureClasses(name):
count = 0
fc_fields = arcpy.ListFields(fc)
for field in fc_fields:
print field.name
if field.name == wanted_field:
print field.name , "_____________ist Spalte der .dbf Tabelle"
Definition der Variablen
fc_tableman = name + "_tableman"
fc_select_tableview = name + "_select_tableman_xls"
table_xls = new_folder + "/" + name + ".xls"
table_csv = name + ".csv"
arcpy.MakeTableView_management(fc, fc_tableman , sql)
print fc_tableman
with arcpy.da.SearchCursor (fc_tableman , wanted_field) as cursor:
for row in cursor:
count = count+1
print "Die Anzahl der Spalten in der Attributtabelle betraegt" , count , "."
if count == 0:
print "Das Shapefile", fc ,"wird nicht neu erstellt, da es keine bearbeiteten Werte enthaelt."
if count > 0:
arcpy.FeatureClassToFeatureClass_conversion(fc , new_folder , fc , sql)
print "Das Shapefile ", name , "mit den selektierten Attributen wurde erstellt."
arcpy.MakeTableView_management(new_folder + "/" +name + ".shp" , fc_select_tableview)
print fc_select_tableview , "wurde erstellt."
arcpy.TableToExcel_conversion(fc_select_tableview , table_xls)
print table_xls , "wurde erstellt."
arcpy.TableToTable_conversion(fc_select_tableview , new_folder , table_csv)
print table_csv , "wurde erstellt."