详解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中使用partial改变方法默认参数实例
Apr 28 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
使用python实现kNN分类算法
Oct 16 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
Python configparser模块常用方法解析
May 22 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
Restful_framework视图组件代码实例解析
Nov 17 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 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 db类库进行数据库操作
2009/03/19 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python和opencv实现抠图
2018/07/18 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
python用match()函数爬数据方法详解
2019/07/23 Python
周年庆典邀请函范文
2014/01/23 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
企业党员一句话承诺
2014/05/30 职场文书
助理政工师申报材料
2014/06/03 职场文书
2014年技术部工作总结
2014/12/12 职场文书
公司慰问信范文
2015/03/23 职场文书
办公室禁烟通知
2015/04/23 职场文书
孟佩杰观后感
2015/06/17 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
利用Apache Common将java对象池化的问题
2022/06/16 Servers
Python中tqdm的使用和例子
2022/09/23 Python