Se podría crear una nueva tabla vacía y utilizar los cursores para ordenar los datos y inserte las filas de la tabla nueva (este código no ha sido probado):
import acrpy,os
inTable = r'c:\workspace\path\in_table.dbf'
outPath = r'c:\workspace\path'
sortedTableName = r'sorted_table.dbf'
arcpy.env.workspace = outPath
arcpy.overwriteOutput = True
#--check if output table exists, if not, create it
if not os.exists(os.path.join(outPath,sortedTableName)):
arcpy.CreateTable_management(outPath,sortedTableName)
#--make a list of all fields in input table
flist = arcpy.ListFields(inTable)
#--add fields to output table
for f in flist:
arcpy.AddField_management(sortedTableName,f.name,f.type,f.precision,f.scale,f.length,f.aliasName)
#--if the table does exist, delete all rows so we can start fresh
else:
try:
arcpy.DeleteRows_management(os.path.join(outPath,sortedTableName))
except:
#--no rows to delete
pass
#--create an insert cursor that will append data to output table
irows= arcpy.InsertCursor(os.path.join(outPath,sortedTableName))
#--create a search cursor to sort and then read data from input table
rows = arcpy.SearchCursor(inTable,'#','#','#','SORT_FIELD1 A;
SORT_FIELD2 D;
SORT_FIELD3 A')
for row in rows:
#--create a new row object in the output table
newrow = irows.newRow()
#--populate each field
for f in flist:
newrow.setValue(f.name,row.getValue(f.name))
#--insert new row
irows.inertRow(newrow)
del irows,rows