详解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 django集成cas验证系统
Jul 14 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
Python with语句和过程抽取思想
Dec 23 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 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编码规范-php coding standard
2007/03/16 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
React.js入门学习第一篇
2016/03/30 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
js初始化验证实例详解
2016/11/26 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
React props和state属性的具体使用方法
2018/04/12 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
英文留学推荐信范文
2014/01/25 职场文书
银行业务授权委托书
2014/10/10 职场文书
入党群众意见范文
2015/06/02 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers
服务器nginx权限被拒绝解决案例
2022/09/23 Servers
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS