详解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读取mp3中ID3信息的方法
Mar 05 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
简单了解django文件下载方式
Feb 10 Python
Python3 Click模块的使用方法详解
Feb 12 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
Python操控mysql批量插入数据的实现方法
Oct 27 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
漂亮但不安全的CTB
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
javascript基本语法分析说明
2008/06/15 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
python里将list中元素依次向前移动一位
2014/09/12 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
python Django模板的使用方法
2016/01/14 Python
python中私有函数调用方法解密
2016/04/29 Python
python安装教程
2018/02/28 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python字典的核心底层原理讲解
2019/01/24 Python
详解Python sys.argv使用方法
2019/05/10 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
如何验证python安装成功
2020/07/06 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
教师求职信
2014/06/17 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
结婚典礼主持词
2015/06/29 职场文书
JavaScript实现简单拖拽效果
2021/09/15 Javascript
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers