详解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对象体系深入分析
Oct 28 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
详解Django中的form库的使用
Jul 18 Python
Apache如何部署django项目
May 21 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
Django框架模板用法入门教程
Nov 04 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
django修改models重建数据库的操作
Mar 31 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 Python
python 使用openpyxl读取excel数据
Feb 18 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实现简单搜歌的方法
2015/07/28 PHP
php简单生成随机数的方法
2015/07/30 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
python中logging包的使用总结
2018/02/28 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Python hashlib模块实例使用详解
2019/12/24 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
专业求职信撰写要诀
2014/02/18 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书