详解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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
Python assert语句的简单使用示例
Jul 28 Python
Python基础之高级变量类型实例详解
Jan 03 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
python range实例用法分享
Feb 06 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
js选项卡的制作方法
2017/01/23 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
python实现文本文件合并
2015/12/29 Python
Python解惑之整数比较详解
2017/04/24 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
Python工程师面试必备25条知识点
2018/01/17 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
python自动化生成IOS的图标
2018/11/13 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
Python学习之os模块及用法
2020/06/03 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
勤俭节约倡议书
2014/04/14 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
消费者理赔投诉书
2015/07/02 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python