详解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使用多线程不断刷新网页的方法
Mar 31 Python
python显示生日是星期几的方法
May 27 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
Python高斯消除矩阵
Jan 02 Python
python 阶乘累加和的实例
Feb 01 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
python实现微信自动回复机器人功能
Jul 11 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
python导入库的具体方法
Jun 18 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 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
一个分页的论坛
2006/10/09 PHP
php 远程图片保存到本地的函数类
2008/12/08 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
下载给定网页上图片的方法
2014/02/18 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python open()文件处理使用介绍
2014/11/30 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
python PyTorch预训练示例
2018/02/11 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
python sorted方法和列表使用解析
2019/11/18 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python如何实现线程间通信
2020/07/30 Python
简述python Scrapy框架
2020/08/17 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
《手指教学》反思
2014/02/14 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
批评与自我批评总结
2014/10/17 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书