Vous pouvez le faire à l'aide d'un curseur pour récupérer les données de votre table et écrire dans un fichier texte délimité par des virgules.
EDIT: J'ajoute un bloc de code plus concis pour accomplir la tâche en utilisant le csvmodule de Python
Nouvelle réponse à l'aide du curseur arcpy.da:
import arcpy,csv
table =r'c:\path\to\table'
outfile = r'c:\path\to\output\ascii\text\file'#--first lets make a list of all of the fields in the table
fields = arcpy.ListFields(table)
field_names =[field.name for field in fields]with open(outfile,'wb')as f:
dw = csv.DictWriter(f,field_names)#--write all field names to the output file
dw.writeheader()#--now we make the search cursor that will iterate through the rows of the tablewith arcpy.da.SearchCursor(table,field_names)as cursor:for row in cursor:
dw.writerow(dict(zip(field_names,row)))
Nouvelle réponse à l'aide d'un curseur à l'ancienne:
import arcpy,csv
table =r'c:\path\to\table'
outfile = r'c:\path\to\output\ascii\text\file'#--first lets make a list of all of the fields in the table
fields = arcpy.ListFields(table)
field_names =[field.name for field in fields]with open(outfile,'wb')as f:
w = csv.writer(f)#--write all field names to the output file
w.writerow(field_names)#--now we make the search cursor that will iterate through the rows of the tablefor row in arcpy.SearchCursor(table):
field_vals =[row.getValue(field.name)for field in fields]
w.writerow(field_vals)del row
Ancienne réponse:
import arcpy
table =r'c:\path\to\table'
outfile = r'c:\path\to\output\ascii\text\file'#--first lets make a list of all of the fields in the table
fields = arcpy.ListFields(table)
i =1
f = open(outfile,'w')for field in fields:#--write all field names to the output fileif i < len(fields):
f.write('%s,'% field.name)
i +=1else:
f.write('%s\n'% field.name)#--now we make the search cursor that will iterate through the rows of the table
rows = arcpy.SearchCursor(table)for row in rows:
i =1for field in fields:if i < len(fields):
f.write('%s,'% row.getValue(field.name))
i +=1else:
f.write('%s\n'% row.getValue(field.name))del rows
f.close()
@Jason - Merci, cela a été très utile. Je suis nouveau donc je n'ai pas la réputation de commenter votre réponse acceptée. Je pense qu'il y a une petite erreur dans la nouvelle réponse qui utilise un curseur arcpy.da. with arcpy.da.SearchCursor(table) as cursor:devrait êtrewith arcpy.da.SearchCursor(table, field_names) as cursor:
Bonne prise @TylerG, j'ai modifié la réponse pour inclure la liste des champs requis par le curseur d'accès aux données. Merci.
Jason
8
Vous voudrez peut-être "Exporter l'attribut d'entité vers ASCII", intelligemment nommé arcpy.ExportXYv_stats
import arcpy
feature ="path to feature here"# fieldnames must be explicitly provided. Note that you will get additional fields based on the feature type (e.g., "XCoord" and "YCoord" for point features)
fieldnames =[X.name for X in arcpy.ListFields(feature)]# delimiter options "SPACE", "COMMA", or "SEMI-COLON"# header options "ADD_FIELD_NAMES" or "NO_FIELD_NAMES"
arcpy.ExportXYv_stats(feature, fieldnames,"SPACE","path to outfile","ADD_FIELD_NAMES")
+1 pour les détections! Cela fonctionne de manière interactive mais pas aussi bien dans un modèle ou un script, car les noms de champ doivent être spécifiés.
matt wilkie
1
Voici un morceau de code que j'utilise. Il m'aide à générer tous mes fichiers de sortie en fichier .txt avec une plage de 0,100. J'espère que cela aide
for x in xrange(0,100):if os.path.isfile(outfolder +"/"+"outputs"+ str(x)+".shp"):
inFeatures ="selected_features"+ str(x)+".shp"
export_ASCII ="ASCII "+ str(x)+".txt"
arcpy.ExportXYv_stats(inFeatures,["Cur1_pr2","Cur3_pl1","slp1"],"SPACE", export_ASCII,"ADD_FIELD_NAMES")
with arcpy.da.SearchCursor(table) as cursor:
devrait êtrewith arcpy.da.SearchCursor(table, field_names) as cursor:
Vous voudrez peut-être "Exporter l'attribut d'entité vers ASCII", intelligemment nommé arcpy.ExportXYv_stats
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//005p0000003v000000
la source
Voici un morceau de code que j'utilise. Il m'aide à générer tous mes fichiers de sortie en fichier .txt avec une plage de 0,100. J'espère que cela aide
la source