ArcGIS Python编程案例(13)-自动执行Python脚本太阳集

 

Windows中贯彻不依赖账户登入的开机运维程序,不借助账

在Windows中大多的职分,我们期待能够在Windows 运营之后自动运营。比如,集团有个订饭系统,基本每一天都亟待登6去订饭,于是写一个剧本完成自动订饭。不过你的微管理器天天要关机,当然不愿意开机后还亟需手动运行这几个订饭脚本了。于是此时大家要将其那种本子落成为开机自动运营脚本。
但要注意本文要讲的开机运行的先后,是在用户还不曾登入的景况下促成运行的。换句话说,本文描述的开机启动的程序运营在Session 0中 首要介绍了叁中艺术, 我们能够采纳适用的法子去贯彻。


一.开辟组战略,在Run(运营)中输入GREDIT.MSC,点击确认。

Windows Startup Script

规行矩步如下步骤:

  1. 开垦本地的组攻略处理,运维命令gpedit
    2. 然后家家户户张开Computer Configuration->Windows Settings->Scripts-> Startup, 在Startup中配置必要开机运转的台本或然程序。
    在机器中的配置,我们都尽量的冀望自动化,于是希望由此脚本来实现那一个动作。可惜未有CMD 命令能够一贯利用那种格局增添运转程序,后来博主寻觅了部分主意,有通过平昔改造注册表的、也有经过vb脚本去贯彻的,但那一个点子个人以为还不够直接,轻松。
    于是博主找到了接下去要说的艺术,通过Windows定期职务管理器。

大家将要本章介绍以下案例:

平常状态下,进入Windows分界面从前都有一个签到进度,怎么着在报到前让系统实行脚本呢?上边介绍壹种办法。

Windows Schedule Task

Windows定时任务管理器,提供了强有力的效果:能够定期的实践义务,除了依照时间去触发定期职务,其还提供了开机运行触及程序运转的法力,你能够通过图形分界面包车型大巴法门配置,也足以经过命令方式:

  • 次第展开Control Panel->Administrative Tools->Task Scheduler,然后再里面新建本人的任务。重要注意以下两点:
    • 职分运营的账号选成”System”
    • 触发器中,采用At Startup触发器
  • 选取如下命令行:
schtasks /create /TN "TASK_NAME" /RU SYSTEM /SC ONSTART /TR "TASK_PROGRAM"
Getting ready

批管理文件是2个文书文件,该公文中涵盖有实践脚本的下令行代码或操作系统实施命令。批管理文件的扩张名叫.bat,Windows将其视为可进行的公文。由于批管理公事中只含有有指令行代码,由此能够使用别的2个文本编辑器来编排,即使如此大家照旧建议你使用像记事本(Notepad)这样轻巧的公文编辑器,可以制止包涵部分不可知的特殊字符,而那类字符只怕会在Microsoft Word中出现。在本案例中,你将开创八个粗略的批管理文件来稳定至包罗有ListFields.py文本的目录中,并施行该脚本文件。

太阳集团所有网址16877 1

Windows Service

当Windows 运行的时候,还尚无登6账号的时候,此时Windows中安装为auto状态的Service将会在Session 0中运作。能够遵照如下步骤去落到实处Windows Service:

  1. 假使还从未得以落成过Windows Service 程序的同学,能够参见这篇文章《Simple Windows Service in C 》去贯彻。
  2. 由此命令行创制Service, 主要注意start= auto设置Service为开机运维。

    sc create “SERVICE_NAME” binpath= "SERVICE_PROGRAM" displayname= "SERVICE_DESCRIPTION" start= auto

Getting ready

在指令提醒窗口中执行Python地理处理脚本有四个方面包车型地铁优势。那么些本子可以安插在悠闲时间推行以获取更加高的频率,同时也有益利用Python自带的错误处理和调度作用来打开调整代码。
在此案例中,你将学习怎么着行使Windows命令提醒符来运营Python脚本。你需求得到管理员权限来完开销案例,由此你大概须要联系消息手艺帮忙部门来修改权限。

太阳集团所有网址16877 2

How to do it...

遵循以下步骤来成立1个批处理公事:
一.张开记事本(Notepad)。
二.增多以下文本:

cd /d C:ArcpyBookAppendix1
python ListFields.py C:ArcpyBookdata Burglaries_2009.shp

三.将文件保留为桌面上的ListFields.bat文件。确认当选封存文件类型
(Save as Type)
中的下拉列表中的具备文件(All Files),不然文本会保存为ListFields.bat.txt文件。
4.双击桌面中的ListFields.bat文件来推行命令代码。
五.在奉行进度中会弹出3个命令提醒符窗口。推行到位后,该窗口会活动关闭。

叁.在右侧双击Stratup,出现如图弹窗,可在此增多cmd或然PowerShell脚本。

引言

Python脚本既能够在ArcGIS运维意况外以独立脚本的格局来运维,也得以在ArcGIS运行情状内以脚本工具的花样来运行。二种格局都有独家的优缺点。到近年来结束,全部的剧本都以在ArcGIS情形中以脚本工具情势或在Python开垦条件IDLE以及ArcGIS内的Python窗口来奉行。但是,Python脚本同样能够由此Windows操作系统命令行格局来施行。那种试行Python脚本的措施对于制定脚本实践职责安顿以来是可怜实用的。制定脚本试行职责安插有多少个方面包车型大巴来头,壹是多多益善地理管理脚本的周转需求消耗相当长日子一般都以布署在非工时来实行。别的,有1对本子需求按期按时(天天,每一周以致每月)推行,有时候也是出于作用思考。在本章中,你将学习怎么着通过命令行来实践Python脚本,将脚本增多到批处理公事中以及在指定时间来推行脚本。需求小心一点,由于代码中供给调用arcpy模块,全部通过的命令行来实践的脚本仍旧须要获得ArcGIS桌面软件的许可。

重启,在下次报到Windows界前边,系统会活动实践所增加的本子。

经过命令行执行Python脚本

到近期停止,本书中兼有的Python脚本要么在ArcGIS情状中以脚本工具情势进行,要么在Python开辟条件中实行。Windows命令行为您提供了其余一种运营Python脚本的章程。命令提醒窗口首要以批管理公事或职分布署的艺术来施行脚本。

二.壹一点击Computer Configuration -> Windows Settings -> Scripts(Startup/Shutdown)

第八贰章 卓殊和错误管理 ||| 附录B 三个常用Python处理职分

太阳集团所有网址16877 3

成立职务陈设

批管理文件成立落成后就足以在Windows任务安排程序中开创职责布署,在指定期间来机关推行管理任务。

四.点击确认

How it works...

Windows职务安排程序会追踪全部的运动任务并会在预约义触发器触发时来施行这么些职务。在此案例中,大家配备职务在每天凌晨一点实践。也就象征天天凌晨1点批管理文件将被触发,同时成立职分时钦赐的参数会传送给脚本。使用职务陈设程序可以在不需求GIS职员的干预的非工时自动实践地理管理职务,那将给你带来越来越多灵活性并巩固工效。你还足以将Python脚本中的错误记录到三个日志文件中来查阅难点的详细音信。


第七2章 至极和错误管理 ||| 附录B 多个常用Python管理职责

How to do it...

依据以下步骤在Windows职务布置程序中设置批管理文件的职责布置。
1.点击始发|全数程序|附属类小部件|系统工具|调控面板|处理工科具
(Start|All Programs|Accessories|System Tools|Control Panel|Administrative Tools)
选择职分布置(Task Scheduler)开荒任务安插程序。职务陈设程序分界面如下图所示:

太阳集团所有网址16877 4

2.选择操作(Action)菜单项后选取创办基本任务(Create Basic Task)弹出始建基本职分向导(Create Basic Task Wizard)对话框。
3.安装义务名称。在该案例中我们将职分名称设置为List Fields from a Feature Class。点击下一步(Next)

太阳集团所有网址16877 5

四.抉择职责实施时的触发器。平时选取基于时间触发器,不过也得以设置为此外类别的触发器,比方用户登入时或计算机运转时等。在此案例中,大家挑选每天(Daily)。点击下一步(Next)

太阳集团所有网址16877 6

伍.抉择三个起来的日羊时间以及试行周期。如下图所示,作者采取起来时间为二零一一年5月30日中午一点,每隔壹天实施一次。由此每一日凌晨壹点都会执行该任务。点击下一步(Next)

太阳集团所有网址16877 7

6.在操作中精选运维程序(Start a program)

太阳集团所有网址16877 8

七.找到你的批管理文件并加上参数。那里需求说美素佳儿(Friso)(Beingmate)下,我们可以选用直接展开前3个案例创制的bat批管理公事后向来点击下一步(Next),也得以如下图所示,导入创造的python脚本文件,在增加参数(Add argument)中输入C:ArcpyBookdata Burglaries_2009.shp后点击下一步(Next)

太阳集团所有网址16877 9

8.点击完成(Finish)加上职分义务安排中。

太阳集团所有网址16877 10

9.任务今后突显在活动职务列表中:

太阳集团所有网址16877 11

加多Python脚本至批管理公事

1旦要在内定的日子实行Python脚本,你要求创设三个暗含二个或八个剧本文件,须求意况下还足以涵盖操作系统命令的批管理公事。批管理文件可加多到Windows系统的职务布署中在钦命的大运内施行。

How it works...

案例中利用的ListFields.py脚本会列出Burglaries_2009.shp文本中的属性字段。工作空间路径和shapefile文件名称在剧本中都透过硬编码管理。输入python后输入脚本名称,在此案例中是ListFields.py,会触发python解释器来运维该脚本。在下三个案例中,你将学习如何将参数字传送递给脚本,那样就足以移除脚本中的硬编码来让剧本越来越灵敏。


There's more...

批管理文件中能够涵盖变量,循环语句,注释以及条件逻辑语句。那些功用已经超(英文名:jīng chāo)越本书范围。但是,假使您要求给单位编写制定大量本子的话,照旧值得花些时间来多了然批管理公事的学问。越来越多关于关于批管理文件的音信,你能够在Wikipedia中查看。

Getting ready

Python中的sys.argv[]对象允许脚本在试行进度中接受命令行传递的输入参数。如下图所示的例子很好地申明了这一干活机制:

太阳集团所有网址16877 12

每一个参数都用空格隔离。那几个参数都保留在二个sys.argv[]的列表对象中。使用索引值0来引用sys.argv[]列表中的第一个要素,即脚本名称。在该案例中脚本名称为做ListFields.py。依次使用递增的整数索引值来引用后续的成分。由此,第三个参数(C:ArcpyBookdata)保存在sys.argv[1]中,第三个参数(Burglaries.shp)保存在sys.argv[2]中。每一个sys.argv[]列表对象中的参数都得以在地理管理脚本中获取并接纳。在此案例中,你必要修改ListFields.py剧本文件来接受命令行输入的参数。

  • 通过命令行执行Python脚本
  • 使用sys.argv[]破获命令行输入参数
  • 将Python脚本增添到批管理文件
  • 成立义务安插

使用sys.argv[]抓获命令行输入参数

剧本中不利用硬编码的不二秘籍来钦点数量集路径,脚本通过接受命令提醒符中输入的参数来进行拍卖职分,那将使得脚本更具备灵活性。这一个输入参数能够动用Python中的sys.argv[]对象来捕获。

How it works...

sys模块中含有了一个argv[]的列表对象,该目标用于保存在命令行形式下实行Python脚本的输入参数。列表中的第1个因素是本子名称。由此,在本案例中sys.argv[0]包含了ListFields.py文件。工作空间和因素类参数分别保存在sys.argv[1]sys.argv[2]中。那些输入参数赋值给变量在本子中央银行使。

Getting ready

数不胜数地理管理脚本都以尤其耗费时间的,最棒是布置在非工时内推行,那样既能够充足利用系统财富也得以让你将精力放在别的职务中。在此案例中,你将学习怎么利用Windows职分安顿程序来安装举行批管理公事的天职陈设。

How to do it...

依据以下步骤来学学怎么样通过Windows命令提示符来实施脚本:
1.Windows中点击起来|全数程序|附属类小部件|命令提醒符
(Start|All Programs|Accessories|Command Prompt)
,弹出贰个近乎于下图的窗口:

太阳集团所有网址16877 13

窗口中会呈现当前目录。你的目录路线会某个异样。大家来改换当前目录。
2.输入cd C:ArcpyBookAppendix1.
3.输入dir来查阅该目录下的文本和子文件夹。你会看到唯有一个誉为ListFields.py的Python文件。

太阳集团所有网址16877 14

四.您供给承认Python解释器能够实践。点击始发|全体程序|附属类小部件|系统工具|调控面板(Start|All Programs|Accessories|System Tools|Control Panel)

太阳集团所有网址16877 15

5.点击系统与安全(System and Security)
6.点击系统(System)
7.点击高等系统装置(Advanced system settings)
8.在系统天性(System Properties)对话框中,如下图所示选择高级(Advanced)选项卡,点击意况变量(Enviroment Variables)按钮:

太阳集团所有网址16877 16

玖.如约下图所示找到Path系统变量,然后点击编辑(Edit)按钮。

太阳集团所有网址16877 17

10.查看C:Python27ArcGIS10.壹目录字符串(依照个体情形修改路线)。假如未有找到该字符串,加多到最终边。确定保证该路径前增添分号分隔符。未来当你在命令提醒符中输入python后,系统就会招来Path系统变量中的每一个索引中寻找一个可实施文件python.exe。

太阳集团所有网址16877 18

11.点击确认(OK)按键关闭编纂系统变量(艾德it System Variable)对话框。
12.点击确认(OK)开关关闭情况变量(Enviroment Variables)对话框。
13.点击确认(OK)按键关闭系统特性(System Properties)对话框。
14.重回命令行提醒符窗口。
15.输入python ListFields.py。系统就会运维ListFields.py剧本。等待一小会后,你会面到如下结果:

太阳集团所有网址16877 19

How it works...

Windows系统将批处理文件视为可施行文件,由此双击批管理公事会活动掸出一个新的命令提醒符窗口来实践批管理文件中的命令行代码。全体的print讲话都会写入到窗口中。代码实行完成后,命令提示符窗口会自动关闭。假如你想追踪输出结果,你能够将结果写入到2个日记文件中。

How to do it...

循规蹈矩以下步骤来成立三个接纳sys.argv[]来接受命令行中输入的参数的本子:
1.在IDLE中打开C:ArcpyBookAppendix1ListFields.py文件。
2.导入sys模块:

import arcpy,sys

三.开立一个变量来保存职业空间参数:

wkspace = sys.argv[1]

四.创办2个变量来保存要素类参数:

fc = sys.argv[2]

伍.翻新设置职业空间路线以及调用ListFields()函数的有关代码:

arcpy.env.workspace = wkspace
fields = arcpy.ListFields(fc)

总体代码如下:

imprt arcpy,sys
wkspace = sys.argv[1]
fc = sys.argv[2]
try:
    arcpy.env.workspace = wkspace
    fields = arcpy.ListFields(fc)
    for fld in fields:
        print fld.name
except:
    print arcpy.GetMessages()

陆.封存脚本。
⑦.开发命令提醒符窗口,退换当前目录至C:ArcpyBookAppendix1
捌.在命令提醒符窗口中,输入以下命令后按下Enter键:

python ListFields.py C:ArcpyBookdata Burglaries_2009.shp

九.您会再二重播到Burglaries.shp文件中属性字段的底细新闻。不相同之处在于您的本子不再须求硬编码事业空间路径和因素类名称。脚本未来得以列出任何要素类的属性字段。

本文由太阳集团所有网址16877发布于www.16877.com,转载请注明出处:ArcGIS Python编程案例(13)-自动执行Python脚本太阳集

您可能还会对下面的文章感兴趣: