详解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 logging
Apr 15 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
详解python持久化文件读写
Apr 06 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
python django model联合主键的例子
Aug 06 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
python中如何设置代码自动提示
Jul 15 Python
python正则表达式re.search()的基本使用教程
May 21 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中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
摘自启点的main.js
2008/04/20 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
JavaScript 数组详解
2013/10/10 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
MYSQL基础面试题
2012/05/13 面试题
Java程序员面试90题
2013/10/19 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
农行心得体会
2014/09/02 职场文书
工厂见习报告范文
2014/10/31 职场文书
高中社区服务活动报告
2015/02/05 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
判断Python中的Nonetype类型
2021/05/25 Python
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
python获取字符串中的email
2022/03/31 Python