怎么打开python命令行窗口_详解python命令提示符窗口下如何运行python脚本

以arcgispro的python脚本为例在arcgispro自带的python窗口下运行python脚本

需求:

将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径。

演示过程:

方式一:脚本中指定好相关参数设置

2020091111194753.gif

import arcpy

import json

import sys

import os

import argparse

import re

result = ""

jsontext = {'success': {}, 'msg': ''}

def checkSavedAprxDatasource(output_aprx_path, mapName, targetDb):

check_result = True

desc = arcpy.Describe(targetDb)

saved_aprx = arcpy.mp.ArcGISProject(output_aprx_path)

for saved_map in saved_aprx.listMaps():

if saved_map.name == mapName:

for lyr in saved_map.listLayers():

if lyr.isFeatureLayer:

# print(lyr.connectionProperties)

if lyr.connectionProperties['workspace_factory'].upper() == 'SDE'.upper(

) and lyr.connectionProperties['connection_info']['instance'] == desc.connectionProperties.instance:

pass

else:

check_result = False

return check_result

if __name__ == '__main__':

try:

# linux

# aprxPath = str(sys.argv[1])

# mapName = str(sys.argv[2])

# sourceDb = str(sys.argv[3])

# targetDb = str(sys.argv[4])

# output_aprx_path = str(sys.argv[5])

# local pc

aprxPath = r'D:\rvt\testaprx\testaprx.aprx'

mapName = 'Map'

sourceDb = r'D:\rvt\testaprx\Data.gdb'

targetDb = r'D:\rvt\testaprx\testsde.sde'

output_aprx_path = r'D:\rvt\testaprx\output\export5.aprx'

aprx = arcpy.mp.ArcGISProject(aprxPath)

for m in aprx.listMaps():

if m.name == mapName:

m.updateConnectionProperties(sourceDb, targetDb)

if os.path.exists(output_aprx_path):

os.remove(output_aprx_path)

aprx.saveACopy(output_aprx_path)

checkResult = checkSavedAprxDatasource(

output_aprx_path, mapName, targetDb)

if checkResult:

jsontext['success'] = True

result = json.dumps(jsontext)

sys.stdout.write(result)

else:

jsontext['success'] = False

jsontext['msg'] = 'Failed to replace data source'

result = json.dumps(jsontext)

sys.stdout.write(result)

except Exception as e:

jsontext['success'] = False

jsontext['msg'] = e.args

result = json.dumps(jsontext)

sys.stdout.write(result)

方式二:使用sys.argv[ ]的形式设置相关参数

(arcgispro-py3) D:\rvt\testaprx>python test.py D:\rvt\testaprx\testaprx.aprx Map D:\rvt\testaprx\Data.gdb D:\rvt\testaprx\testsde.sde D:\rvt\testaprx\output\export5.aprx

2020091111194854.gif

import arcpy

import json

import sys

import os

import argparse

import re

result = ""

jsontext = {'success': {}, 'msg': ''}

def checkSavedAprxDatasource(output_aprx_path, mapName, targetDb):

check_result = True

desc = arcpy.Describe(targetDb)

saved_aprx = arcpy.mp.ArcGISProject(output_aprx_path)

for saved_map in saved_aprx.listMaps():

if saved_map.name == mapName:

for lyr in saved_map.listLayers():

if lyr.isFeatureLayer:

# print(lyr.connectionProperties)

if lyr.connectionProperties['workspace_factory'].upper() == 'SDE'.upper(

) and lyr.connectionProperties['connection_info']['instance'] == desc.connectionProperties.instance:

pass

else:

check_result = False

return check_result

if __name__ == '__main__':

try:

# linux

aprxPath = str(sys.argv[1])

mapName = str(sys.argv[2])

sourceDb = str(sys.argv[3])

targetDb = str(sys.argv[4])

output_aprx_path = str(sys.argv[5])

print("aprx路径: "+aprxPath)

print("地图视图的名称: "+mapName)

print("当前的数据源路径: "+sourceDb)

print("目标数据源路径: "+targetDb)

print("aprx另存为路径: "+output_aprx_path)

# local pc

# aprxPath = r'D:\rvt\testaprx\testaprx.aprx'

# mapName = 'Map'

# sourceDb = r'D:\rvt\testaprx\Data.gdb'

# targetDb = r'D:\rvt\testaprx\testsde.sde'

# output_aprx_path = r'D:\rvt\testaprx\output\export5.aprx'

aprx = arcpy.mp.ArcGISProject(aprxPath)

for m in aprx.listMaps():

if m.name == mapName:

m.updateConnectionProperties(sourceDb, targetDb)

if os.path.exists(output_aprx_path):

os.remove(output_aprx_path)

aprx.saveACopy(output_aprx_path)

checkResult = checkSavedAprxDatasource(

output_aprx_path, mapName, targetDb)

if checkResult:

jsontext['success'] = True

result = json.dumps(jsontext)

sys.stdout.write(result)

else:

jsontext['success'] = False

jsontext['msg'] = 'Failed to replace data source'

result = json.dumps(jsontext)

sys.stdout.write(result)

except Exception as e:

jsontext['success'] = False

jsontext['msg'] = e.args

result = json.dumps(jsontext)

sys.stdout.write(result)

到此这篇关于详解python命令提示符窗口下如何运行python脚本的文章就介绍到这了,更多相关python命令运行python脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值