详解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多进程操作实例
Nov 21 Python
win与linux系统中python requests 安装
Dec 04 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
Python 支付整合开发包的实现
Jan 23 Python
在pycharm中显示python画的图方法
Aug 31 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
为什么python比较流行
Jun 19 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
十个Python自动化常用操作,即拿即用
May 10 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
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP学习记录之数组函数
2018/06/01 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
Tensorflow 多线程设置方式
2020/02/06 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
机关道德讲堂实施方案
2014/03/15 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
试用期辞职信范文
2015/03/02 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书