Python 如何删除文件基名称的一部分并将其附加到文件名的末尾?

Python 如何删除文件基名称的一部分并将其附加到文件名的末尾?,python,append,arcpy,arcmap,Python,Append,Arcpy,Arcmap,我在一个文件中有多个要素类,需要根据指定的文件重新投影它们。我正在编写一个Arcpy脚本(将用于在Arcmap中创建一个工具)来实现这一点 如何删除文件名的开头并将其添加到结尾?您可以看到,为了运行arcpy.Project\u management工具,我必须指定output\u feature\u类前面有一个文本字符串,以便正确使用该工具。例如,我不需要说“projected_shapeFile.shp”,而是需要说shapeFile_projected.shp 我为此编写了一个“for”循

我在一个文件中有多个要素类,需要根据指定的文件重新投影它们。我正在编写一个Arcpy脚本(将用于在Arcmap中创建一个工具)来实现这一点

如何删除文件名的开头并将其添加到结尾?您可以看到,为了运行
arcpy.Project\u management
工具,我必须指定output\u feature\u类前面有一个文本字符串,以便正确使用该工具。例如,我不需要说“projected_shapeFile.shp”,而是需要说shapeFile_projected.shp

我为此编写了一个“for”循环,因此我希望对所有重新投影的要素类都这样做

#Import modules
import arcpy, os

#Set workspace directory
from arcpy import env

#Define workspace
inWorkspace = arcpy.GetParameterAsText(0)
env.workspace = inWorkspace
env.overwriteOutput = True

#Define local feature class to reproject to
targetFeature = arcpy.GetParameterAsText(1)

#Describe the input feature class 
inFc = arcpy.Describe(targetFeature)
sRef = inFc.spatialReference

#Describe input feature class
fcList = arcpy.ListFeatureClasses()

#Loop to re-define the feature classes
for fc in fcList:
    desc = arcpy.Describe(fc)
    if desc.spatialReference.name != sRef.name:
        print "Projection of " + str(fc) + " is " + desc.spatialReference.name + ", so re-defining projection now:\n"
        newFc = arcpy.Project_management(fc, "projected_" + fc, sRef)
        arcpy.AddMessage(arcpy.GetMessages())
        newFc = arcpy.Describe(newFc)
        count = arcpy.GetMessageCount()
        print "The reprojection of " + str(newFc.baseName) + " " + arcpy.GetMessage(count-1) + "\n"

我还想在打印消息时从名称中删除“.shp”,这可能吗?

我不知道哪条语句给出了文件名。 用给出输出的语句替换输入

name = "projected_shapeFile.shp" #here add the statement that outputs the filename 
name = name[:name.find('.')] #skip this if you want to keep ".shp" extension
name = name.split('_')
name = name[1] +'_' +name[0]
name
在循环内部:

#Loop to re-define the feature classes
for fc in fcList:
    desc = arcpy.Describe(fc)
    if desc.spatialReference.name != sRef.name:
        print "Projection of " + str(fc) + " is " + desc.spatialReference.name + ", so re-defining projection now:\n"
        newFc = arcpy.Project_management(fc, "projected_" + fc, sRef)
        newFc = newFc[:name.find('.')] #skip this if you want to keep ".shp" extension
        newFc = name.split('_')
        newFc = newFc[1] +'_' +newFc[0]
        arcpy.AddMessage(arcpy.GetMessages())
        newFc = arcpy.Describe(newFc)
        count = arcpy.GetMessageCount()
        print "The reprojection of " + str(newFc.baseName) + " " + arcpy.GetMessage(count-1) + "\n"

哪个语句给出了“projected\u shapeFile.shp”?@yusuffaktir
newFc=arcpy.projection\u management(fc,“projected\u”+fc,sRef)
请参见下面的循环版本,这很有意义。我怎样才能将它包含在“for”循环中,这样我就可以为所有人都这样做?我已经回答了你上面的问题,也许这会有所帮助?我已经编辑了我的答案来展示如何在循环中包含
#Loop to re-define the feature classes
for fc in fcList:
    desc = arcpy.Describe(fc)
    if desc.spatialReference.name != sRef.name:
        print "Projection of " + str(fc) + " is " + desc.spatialReference.name + ", so re-defining projection now:\n"
        newFc = arcpy.Project_management(fc, "projected_" + fc, sRef)
        newFc = newFc[:name.find('.')] #skip this if you want to keep ".shp" extension
        newFc = name.split('_')
        newFc = newFc[1] +'_' +newFc[0]
        arcpy.AddMessage(arcpy.GetMessages())
        newFc = arcpy.Describe(newFc)
        count = arcpy.GetMessageCount()
        print "The reprojection of " + str(newFc.baseName) + " " + arcpy.GetMessage(count-1) + "\n"