详解python命令提示符窗口下如何运行python脚本


Posted in Python onSeptember 11, 2020

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

需求:

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

示例数据:testaprx_3water.rar

演示过程:

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

详解python命令提示符窗口下如何运行python脚本

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

详解python命令提示符窗口下如何运行python脚本

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脚本内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中pass语句用法实例分析
Apr 30 Python
Python做文本按行去重的实现方法
Oct 19 Python
python之PyMongo使用总结
May 26 Python
python3个性签名设计实现代码
Jun 19 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
python 多线程重启方法
Feb 18 Python
pytorch中的transforms模块实例详解
Dec 31 Python
python利用datetime模块计算程序运行时间问题
Feb 20 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
python计算auc的方法
Sep 09 Python
python switch 实现多分支选择功能
Dec 21 Python
python使用pymysql模块操作MySQL
Jun 16 Python
python实现邮件循环自动发件功能
Sep 11 #Python
Python 实现微信自动回复的方法
Sep 11 #Python
python 如何调用远程接口
Sep 11 #Python
Visual Studio code 配置Python开发环境
Sep 11 #Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 #Python
python如何实现图片压缩
Sep 11 #Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 #Python
You might like
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
DOM 基本方法
2009/07/18 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
js Math 对象的方法
2013/09/01 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
详解vue-router基本使用
2017/04/18 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
python实现数据图表
2017/07/29 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python如何生成网页验证码
2018/07/28 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
策划创业计划书
2014/02/06 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
红色革命电影观后感
2015/06/18 职场文书
高中军训感想
2015/08/07 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js