python语法总结
python语法总结(精选6篇)
python语法总结 第1篇
1.在Python中,一般来说一条语句占用一行。一条语句结束一般不需要使用C语言中的“;”,但在Python中也可以使用“;”将两条语句写在一行。另外,如果缩进语句中只有一条语句,也可以将其写在“:”之后。
2.单引号中的字符串可以包含双引号,双引号中的字符串可以包含单引号,而不需要使用转义字符。另外3个引号所包围的字符可以作为注释,还可以作为格式化的字符串,该字符串可以不再一行,格式化后行尾会自动转化为“n”转义字符。
3.在Python中可以使用“”将较长的语句分成几行来写,但是注意每行后面不可以有#注释。或者可以使用圆括号将较长的语句分行,每行后面可以使用#注释。
4.类型间转换
hex():将整数转换为十六进制字符串,包含前缀“0x” oct():将整数转换为八进制字符串,包含前缀“0o”
注:string模块中有string.atoi(x, base = 10),类似int(),但是可以选择变换后的进制
5.math模块中数学函数:
hypot(x, y):求直角三角形的斜边长度,x和y为两个直角边长度 fmod(x, y):求x / y的余数,等同于x % y ceil(x):求不小于x的最大整数 floor(x):求不大于x的最小整数 fabs(x):求x的绝对值 exp(x):求e的x次幂
pow(x, y):求x的y次幂,等同于x ** y log10(x):求x以log10为底的对数 sqrt(x):求x的平方根 pi:求pi的值
6.字符串操作
string.capitalize():将字符串第一个字母大写 string.count(x):获得字符串中某字符串的数目 string.find(x):获得字符串中某子字符串的起始位置 string.isalnum():是否仅包含0~
9、A~Z、a~z string.isalpha():是否仅包含A~Z、a~z string.isaldigit():是否仅包含0~9 string.islower()string.isupper()string.lower()string.upper()string.isspace()string.istitle():字符串中所有单词是否首字母大写 string.title()string.join(x):将string插入x中的每两个字符之间 string.swapcase():大小写字母转换 string.split(x):利用分割字符串的单词(默认是space)len(string)7.格式化字符串
%f %d %s %o:八进制整数 %x:十六进制整数
注:r“xxxxx”或者R“xxxxx”表示原始字符串,常用语正则表达式或者路径表示中,其间没有转义字符,均是正常字符。
8.列表list list.append(x):追加成员x list.count(x):参数x出现的次数
list.extend(x):list1+list2无法改变list1,只能返回一个新的list,但是list2.extend(list2)函数可以改变list1的值
list.index(x):获得x在list中的位置 list.insert(index, x):在index处插入x list.pop(index):删除索引为index的成员
list.remove(x):删除值为x的成员 list.reverse()list.sort()list.clear()注:tuple的操作与list类似,但是不包含可修改元组的操作。
9.字典dict dict.clear()dict.copy(x):将字典x拷贝给dict dict.get(key):等同于dict[k] dict.has_key(key):是否包含key键 dict.items():获得键-值对组成的列表 dict.keys():获得键组成的列表 dict.values():获得值组成的列表 dict.pop(key)dict.update(x):利用字典x更新原字典
10.文件操作
open(filename, mode, bufsize)filename:要打开的文件名
mode:打开模式(r是只读,w是替换写,a是追加写,+是读写等)bufsize:缓冲区大小,可以默认 file.read():整个文件读入字符串中 file.readlines():整个文件读入列表中 file.readline():某行读入字符串中 file.write(x):写入字符串 file.writelines(x):写入列表x file.close().11.函数参数
调用函数可以同时使用按顺序传递参数,以及关键字传递参数等,但是必须注意按顺序传递的参数要位于按关键字传递的参数之前,而且不能有重复的情况发生。例如: def sample(x, y, z): pass mysum(1, z = 5, y = 6)#ok mysum(z = 6, y = 7, 3)#error 使用可变长参数的函数,将其所有参数保存在一个元组里,在函数中可以使用for循环来处理,声明一个可变长参数的函数只需用*开头定义一个参数即可。
12.局部/全局变量
局部作用域内的变量的改变并不影响全局作用域内的变量,除非通过引用的方式传递参数。如果要在函数内使用函数外的变量,可以在变量名前使用global关键字。例如: def func(x): global a return x + a 13.模块查找路径
导入模块时,python解释器首先在当前目录中查找导入的模块;如果未找到,解释器会从sys模块中的path变量指定的目录查找导入模块;如果均未找到,则会出错。import sys sys.path 在脚本中可以向sys.path添加查找路径,例如可以在.py中如下: import os import sys modulepath = os.getcwd()+ „module‟ #module是当前目录下的module子目录 sys.path.append(modulepath)import mymodule #mymodule在module子目录中 ************ 14.dir(x)可以获得导入模块中的所有定义的名字和函数等。
import sys dir(sys)当不使用参数时,该函数将返回当前脚本的所有名字列表。
15.模块包
包可以看成是出于同一个目录中的模块,在python中首先使用目录名,然后再使用模块名导入所需要的模块。在包的每个目录(包括子目录)中都必须包含一个“__init__.py”的文件,该文件甚至可以是一个空文件,仅用于表示该目录为一个包。
在__init__.py中设置__all__变量和包初始化所需的代码,可以保证在from中使用*时名字的正确导入。from A.B import a import A.B.a 有了包的概念可以很好地解决模块查找路径的问题,只要将所有的模块放在当前目录中的某个文件夹内(子目录),然后在子目录内新建一个__init__.py文件即可,而不需将子目录的路径添加到sys.path中。
python语法总结 第2篇
这篇文章主要介绍了Python读写文件方法,实例分析了Python读写文件常用的方法与使用技巧,需要的朋友可以参考下
本文实例总结了Python读写文件方法,分享给大家供大家参考。具体分析如下:
1.open
使用open打开文件后一定要记得调用文件对象的close方法。比如可以用try/finally语句来确保最后能关闭文件。
file_object = open(‘thefile.txt‘)try: all_the_text = file_object.read( )finally: file_object.close( )
注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。
2.读文件
读文本文件
input = open(‘data‘, ‘r‘)#第二个参数默认为rinput = open(‘data‘)
读二进制文件
代码如下:
input = open(‘data‘, ‘rb‘)
读取所有内容
file_object = open(‘thefile.txt‘)try: all_the_text = file_object.read( )finally: file_object.close( )
读固定字节
file_object = open(‘abinfile‘, ‘rb‘)try: while True: chunk = file_object.read(100) if not chunk:break do_something_with(chunk)finally: file_object.close( )
读每行
代码如下:
list_of_all_the_lines = file_object.readlines( )
如果文件是文本文件,还可以直接遍历文件对象获取每行:
for line in file_object: process line
3.写文件
写文本文件
代码如下:
utput = open(‘data‘, ‘w‘)
写二进制文件
代码如下:
utput = open(‘data‘, ‘wb‘)
追加写文件
代码如下:
utput = open(‘data‘, ‘w+‘)
写数据
file_object = open(‘thefile.txt‘, ‘w‘)file_object.write(all_the_text)file_object.close()
写入多行
代码如下:
file_object.writelines(list_of_text_strings)
注意,调用writelines写入多行在性能上会比使用write一次性写入要高。
在处理日志文件的时候,常常会遇到这样的情况:日志文件巨大,不可能一次性把整个文件读入到内存中进行处理,例如需要在一台物理内存为 2GB 的机器上处理一个 2GB 的日志文件,我们可能希望每次只处理其中 200MB 的内容。
在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。以下面的代码为例:
file = open(‘test.log‘, ‘r‘)sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: position = file.tell() lines = file.readlines(sizehint)
每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候),
通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。
file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。在python中一切都是对象,file也不例外,file有file的方法和属性。下面先来看如何创建一个file对象:
file(name[, mode[, buffering]])
file()函数用于创建一个file对象,它有一个别名叫open(),可能更形象一些,它们是内置函数。来看看它的参数。它参数都是以字符串的形式传递的。name是文件的名字。
mode是打开的模式,可选的值为r w a U,分别代表读(默认) 写 添加支持各种换行符的模式。用w或a模式打开文件的话,如果文件不存在,那么就自动创建。此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空,因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。由于历史的原因,换行符在不同的系统中有不同模式,比如在 unix中是一个/n,而在windows中是‘/r/n‘,用U模式打开文件,就是支持所有的换行模式,也就说‘/r‘ ‘/n‘ ‘/r/n‘都可表示换行,会有一个tuple用来存贮这个文件中用到过的换行符。不过,虽说换行有多种模式,读到python中统一用/n代替。在模式字符的后面,还可以加上+ b t这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件。
buffering如果为0表示不进行缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,应该是以字节为单位的。
file对象有自己的属性和方法。先来看看file的属性。
closed #标记文件是否已经关闭,由close()改写
encoding #文件编码
mode #打开模式
name #文件名
newlines #文件中用到的换行模式,是一个tuple
softspace #boolean型,一般为0,据说用于print
file的读写方法:
F.read([size]) #size为读取的长度,以byte为单位
F.readline([size])
#读一行,如果定义了size,有可能返回的只是一行的一部分
F.readlines([size])
#把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
F.write(str)
#把str写到文件中,write()并不会在str后加上一个换行符
F.writelines(seq)
#把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
file的其他方法:
F.close()
#关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError
F.flush()
#把缓冲区的内容写入硬盘
F.fileno()
#返回一个长整型的”文件标签“
F.isatty()
#文件是否是一个终端设备文件(unix系统中的)
F.tell()
#返回文件操作标记的当前位置,以文件的开头为原点
F.next()
#返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。
F.seek(offset[,whence])
#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
F.truncate([size])
#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
python语法总结 第3篇
【关键词】 倒装;全部倒装;部分倒装
在英语中,有时为了强调句子某一部分,或适应一定的语法结构的需要,把谓语的全部或一部分提到主语的前面,就构成倒装。我们平时遇到的句子基本都是自然语序,如:主语 + 谓语;主语 + 谓语 + 宾语;主语 + 系动词 + 表语。
采用倒装的目的有两点:
1. 语法结构的需要:疑问句、there be 结构等通常要用倒装句。
There is a pen and three pencils in the box
What are you doing here?
2.修辞的需要:倒装句可以起强调作用,加强语气。
Away went the football fans.
而根据倒装的构成,可将其分为全部倒装和部分倒装。
一、全部倒装(Full Inversion)
全部倒装是将句子中的谓语动词全部置于主语之前。此结构通常只用于一般现在时和一般过去时。常见的结构有:
1.以here, there, out, in, up, down, off, away等方位副词和now, then,thus等副词置于句首以示强调,句子要全部倒装,谓语动词常用come, go, be, lie, run, rush等。
Here comes the bus Down fall the leaves
There goes the bell Away went the boy
Attention:当主语是人称代词时,主谓不倒装。E.g.:
Away he went Out they rushed
Here it is Here you are
2. 当表示地点的介词短语在句首时。
At the foot of the hill lies a small village.
By the side of the road is our school.
At the meeting place of the Yangtze River and the Jialing River______, one of the ten largest cities in China. (2010年重庆卷,33)
A. lies Chongqing B. Chongqing lies
C. does lie Chongqing D. does Chongqing lie
3.直接引语的全部或一部分放在句首时,主句中的主谓也常用全部倒装。
“Perfect,” said the teacher.
“Get out,” shouted the manager.
二、部分倒装(Partial Inversion)
就是谓语的一部分, be/助动词/情态动词提到主语的前面,如is / am / are / was / were,do / does / did / have/ has / had,can / could / would / may / will / might 等。
1. only所修饰的副词、介词短语或状语从句放在句首时, 要进行部分倒装,e.g.:
Only then did I realize that I was wrong.
Only in this way can you learn English well.
Only when I got home did I hear of the news.
Attention: only修饰主语或only+状语放在句末时,仍用自然语序,而不用倒装。e.g.
Only Li Hua knows the secret.
You can learn English well only in this way.
Only then ____ how much damage had been caused.(2006 陕西,16)
A.had she realized B. she realized
C. did she realize D. she had realized
2. 表示否定的副词never , not, seldom, hardly, little, nowhere等以及介词短语by no means, in no way, in no case, at no time, on no account, , on no condition, under no circumstances(这七个短语均表示“无论如何都不,绝不”,其后不能再出现否定词)等位于句首时。
I’ve tried very hard to improve my English. But by no means _____ with my progress. (2006年重庆卷,24)
A.the teacher is not satisfied
B. is the teacher not satisfied
C.the teacher is satisfied
D. is the teacher satisfied
3. not until+时间状语(从句)位于句首时,主句用部分倒装。
He didn’t finish his homework until his mother came back.
→Not until his mother came back did he finish his homework.
→It was not until his mother came back that he finished his homework.
4.在 hardly / scarcely /…when…; no sooner…than 的倒装句中,前倒后不倒。
hardly / scarecly / no sooner后句子的谓语用had done, when / than后句子的谓语用一般过去时,结构为:Hardly/Scarcely had sb done sth when sb did sth; No sooner had had sb done sth than sb did sth.
(1) Hardly had I fallen asleep when he came in.
(2) No sooner had I reached the station than the train moved.
5. 以关联连词not only...but also…开首的句子前倒后不倒。
Not only did he say so, but (also) he did so.
Attention :当连接主语时不倒装,谓语动词依据就近一致原则。
Not only he but also his parents like reading.
三、其他特殊的倒装结构
1. 祝愿语
May you succeed!
Long live the People’s Republic of China!
2. However / No matter how + adj / adv.
However difficult the question was, Jack answered it easily.
3. as/ though (虽然,尽管)引导的让步状语从句,其结构为:名词/形容词/副词/动词原形+as/though+主语+其他。
Although I was tired, I decided to walk on.
→Tired as I was, I decided to walk on.
Though he is a child, he knows a lot.
→Child as he is, he knows a lot.
Although I may fail, I have to work hard.
→Fail as I may, I have to work hard.
Even though he shouted angrily, I didn’t care.
→Angrily as he shouted, I didn’t care.
Attention:从句的表语是名词时,名词前不加任何冠词; though后面的让步状语从句可倒可不倒。
_______, his idea was accepted by all the people at the meeting. [2007 重庆]
A. Strange as might it sound B. As it might sound strange
C. As strange it might sound D. Strange as it might sound
简要总结:1.全部倒装主要用在以方位副词或地点状语开头的句子中,而部分倒装主要用在否定副词和以下句型中,So / Such…that…;Not only…but also…; Hardly / Scarcely …when…; No sooner…than…(以上句型中前倒后不倒),Not until+状语;Only+状语(而这两个句型中前不倒后倒)。
2. 主语为人称代词时不倒装是针对全部倒装而言的。
3. as引导的让步状语从句和其他的特殊结构既不属于全部倒装,也不属于部分倒装。
python语法总结 第4篇
【关键词】虚拟语气 语法教学 总结归纳 有效学习
虚拟语气指的是,所描述的动作或状态与客观事实相反,表示说话人的主观愿望、假设或推测等。该语法既是高中英语语法学习中的重点,又是一大难点,太多的规则使学生记起来困难,用起来容易出错,很多学生经常对它的用法感到困惑,理解不透。 因为在我们汉语中没有虚拟语气这一概念,所以当高中学生遇到这一语法点时,他们往往因为没有母语作为参照,在理解时存在或多或少的问题。作为一位中学英语教教师,如何帮助学生巧妙地突破这一难点,更有效地学习虚拟语气呢?笔者认为归纳总结法,可引导学生更好地构建虚拟语气知识体系。学习虚拟语气时,我们可以从两种不同的角度,把它划分为四个类型:常态虚拟语气(if虚拟语气) 、含蓄虚拟语气、混合式虚拟语气和各种特例虚拟语气。也可以概括总结为四个方面:即在名词性从句,形容词性从句,状语从句以及简单句中的应用。现在笔者从这两种不同的角度对该语法的应用进行逐一论述:
一、虚拟语气的四种类型
(一)三种常态或基本态虚拟语气:条件句有两类,一类是真实条件句,一类是虚拟条件句。在含有虚拟条件句的复合句中,主句和从句的谓语都要用虚拟语气。
(二)混合式虚拟语气
A. 时间错综句:虚拟条件句中的从句与主句或上下文所表达的时间不一致。在这种情况下,就不可能照搬某种形式,而应该按照句中所表述的时间选择相应的虚拟形式。如:
①If I were you, I would have gone to the theater yesterday.
②If you had studied harder, you would pass the exam.
B. 虚实错综句:即句子一半为虚拟,另一半为陈述语气; but前句用虚拟而or/otherwise后句用虚拟) 。 换句话说,条件从句中的动作和主句中的动作发生的时间如果不一致,这时动词的形式要根据它所表示的时间加以调整:
① She would have made progress in English last year, but she didn’tstudy hard.
②He is thin and eats little, otherwise he would put on some weight.
(三)含蓄虚拟语气:含蓄虚拟语气是指没有if,但用介词短语或连词引出一个虚拟条件。如:
①But for your help, I couldn’t have finished my homework in
time.
②Without water, we would die. Without knowledge, we would be foolish.
③With better equipment, we could have done it better. With much money, we would help the poor in the world.
(四)各种特例虚拟语气⊙should家族:在英语中表示一份(坚持) insist, 二道(命令)order, command, 三点建议suggest, propose, advise,和四项要求 demand, ask ,require, request 时,名词性从句中一般要用虚拟语气。其谓语动词的变化形式为should+v/v. A.由上类动词派生的常见名词有: advice、decision、demand、desire、order、requirement、suggestion等。B.相关的形容词或过去分词有: advisable、 desired、desirable) 、insistent、ordered、preferable、proposed、required、urgent等。 例如:①I advise that we stay and wait here. (宾语从句)②It is advised that we stay here. ( 主语从句)
二、虚拟语气用在四个方面
(一)在名词性从句中的应用: 在四类名词性从句中,该类谓语动词用should +v/v的虚拟语气形式。
(二)虚拟语气在条件状语从句中的应用
If he had seen you yesterday, he would have asked you about
it.
(三)虚拟语气在定语从句中的应用
It’s (high) time (that) we did our homework.
(四)虚拟语气在简单句中的使用
A. It would be better for you not to stay up too late.
B. 在一些习惯表达中。例如: I would rather not tell you.
C.用“may + v” : May you be happy!
三、归纳虚拟标志,巧学虚拟语气
虚拟语气常常是由一些具有虚拟含义的词、短语或句子构成,它们可以变成是虚拟语气的标志,寻找句子中的虚拟标志,可以巧学虚拟语气。现将常见的虚拟标志总结如下:以非真实if条件状语从句为虚拟语气标志以even if/even though为虚拟标志以as if/as though为虚拟标志的表语从句或方式状语从句以wish引导的宾语从句为虚拟标志以表示建议、坚持、命令和请求的四种名词性从句为虚拟标志
python语法总结 第5篇
【关键词】裂纹扩展,Python,扩展有限元。
【中图分类号】TJ06 【文献标识码】A 【文章编号】1672-5158(2013)03-0052-01
对于裂纹的扩展研究,主要从微观到宏观角度的出发,固体材料从变形到破坏,跨越了原子结构到宏观的9至11个尺度量级。裂纹尖端很小的区域内的应力、应变都是影响裂纹扩展的主要因素。因此从研究范围来看,跨尺度的宏细观研究相结合,正成为断裂力学研究方向。裂纹尖端区域内的微观上结构组织发生的变化和影响是当前断裂力学的研究前沿课题。从细观和宏观尺度上,研究各种材料的断裂、损伤、蠕变和腐蚀疲劳等方面的最新理论、实验研究方法及其工程应用。
1 python与ABAQUS运算方法
1.1 python汇编语言简介
Python语言是一种动态解释型编程语言,1989年由Guido van Rossum开发,并于1991年年初发表。Python语言功能强大、简单易学,支持面向对象编程(object-oriented programming),已逐渐受到越来越多的用于的关注。
Python语言主要有如下重要特征:
(1) 面向对象性(2)简单性(3)健壮性(4)可扩展性(5)动态性(6)内置的数据结构(7)跨平台性(8)强类型
1.2 python与ABAQUS运算方法
Abaqus脚本接口可以实现Abaqus/CAE中的所有功能,并在Python语言的基础上又扩展了一些新的对象类型。这些对象间的层次和关系组成了Abaqus 的对象模型。
Abaqus脚本接口对Python 语言进行了扩展,额外提供了大约500个对象模型,这些对象模型之间的关系比较复杂,大致将这写对象分为3 类:Session、Mdb 和Odb。如图1 所示
(3)
右端第一项可用于模型中所有节点;右端第二项只对形函数被裂纹内部切开的单元节点有效;右端第三项只对形函数被裂纹尖端切开的单元节点有效。
3.算例
3.1 模型建立及运算
以CT试件裂纹扩展为例,用python编程做裂纹扩展。主要分为以下几个步骤
(1)from part import * #第一步,建立建模
(2)from material import * #第二步,材料定义
编译完CT试件模型后对其进行材料的定义,使用缩减积分单元,材料为高强钢,其屈服强度为714MPa,抗拉强度844MPa。在程序中定义极限强度准则如下:
mdb.models['Model-1'].materials['Q690']. Maxps Damage Initiation(table=((844,),))
并定义其损伤和断裂准则,它是根据指数形式来定义的。
(3)from assembly import * #第三步,装配
(4)from mesh import * #第四步,网格划分控制
为了能画出整齐的网格,在画网格之前,先把试件分隔成块,并对其进行单独网格设置,网格的边缘不能与之前画的裂纹重合。
(5)from interaction import * #第五步,定义相互接触
该步骤主要用于定义裂纹和板件接触的定义,并定义试件孔与孔圆心耦合,以便于施加载荷。
(6)from step import * #第六步,定义分析步
步骤中定义静力加载,并定义输出,主要输出内容如下:
mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(va riables=( 'S','LE','U','RF','PHILSM','STATUSXFEM'))。
(7)from load import * #第七步,载荷边界定义
运算选用位移载荷,在上孔加载,下孔约束。
(8)计算任务生成并提交计算。
3.2. 运算结果与分析
提交完由Abaqus进行运算,其某一时刻的裂纹扩展云图如图2所示,图中可以看出网格整齐,基本为正方形网格,单元在内部开裂,裂纹沿着最大主应力方向扩展,其应变能随时间变化的曲线如图3所示。
图2 裂纹扩展云图 图3 应变能随时间变化曲线
参考文献:.
[1] 刘长虹,李洪升,彭军. 基于XFEM的裂纹扩展分析[J]. 上海工程科学技术大学学报,2010,24(3) : 218-220.
[2] 曹金凤. Python语言在Abaqus中的应用[M]. 北京:机械工业出版社,2011.8: 13-173
python语法总结 第6篇
【关键词】Python;arcgis;arcpy;地图输出
引言
在基于ArcGIS的地理信息系统的开发中,经常需要将地图按照一定的属性和比例要求导出为相应图片。一般情况下我们会选择直接使用ArcGIS工具箱直接导出图片,但当我们需要导出多张图片时,就显得非常麻烦。然而ArcGIS提供了多种编程接口和类库,可以让我们方便地自己定制各种2次开发地理信息系统和工具。ArcGIS有提供C#,JAVA等传统语言的AO接口,还有提供VB和Python这类解析性语言的接口。AO接口过于复杂,适用于用来二次开发GIS系统,而用来制作小型辅助工具有点大材小用;VB将近淘汰边缘,而且新版本ArcGIS默认不支持,需要安装;所以我们选择了Python作为小工具制作的辅助语言。
Python是一种不受局限的、跨平台的开源编程,属于解析性脚本语言。Python具有脚本语言中最丰富和最强大的类库,而且能把其他语言制作的各种模块轻松地联结在一起。Python非常简单易学,开发效率极高。
1.arcpy简介
arcpy是ArcGIS的一个Python包,包含对地图操作和地图代数的支持,支持编辑处理和几何操作。Python已經与ArcGIS高度集成,方便实现GIS的各种处理流程。
2.实现方法
实现将mxd文件批量地图输出需要做两次遍历才能把所有地图输出。如图1所示,首先遍历mxd文件目录中的mxd文件,然后将每个文件中所包含的图层遍历出来。获取每个图层后,需要先将图层开启显示,然后调用arcpy库的方法将图层输出成JPG文件,完成后关闭该图层,最后遍历完毕地图也输出完毕。
2.1导入arcpy库
在Python中操作使用ArcGIS的功能,必须先导入ArcGIS提供的Python类库arcpy。arcpy库是ArcGIS产品自带的,不需要额外安装。导入方法是:
import arcpy
2.2遍历子目录
在Python中,内置了一个非常简单目录遍历方法os.walk()。该函数会返回一个三元tupple(dirpath, dirnames, filenames) ,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。然后利用for循环进行遍历。
2.3图层遍历
在地图文档(.mxd)中一般包含很多图层,我们需要将每个图层都输出成JPG图片,这样就需要对图层的遍历。arcpy库提供了一套完整的制图模块库arcpy.mapping,该模块库主要是用于操作现有地图文档(.mxd)和图层文件(.lyr)的内容。遍历图层需要用到arcpy提供的一个方法arcpy.mapping.ListLayers(arcpy.mapping),该方法返回一个包含所有图层对象的Python list,然后我们就可以用Python遍历list的方法遍历图层。
2.4输出JPG格式的地图
arcpy库还提供自动执行导出和打印的函数。这里就是使用了一个导出JPG格式的函数ExportToJPEG。
3.结束语
本文介绍了一种利用Python对ArcGIS批量地图输出的方法,通过程序可以看到Python程序非常整合和简洁,合理利用Python和arcpy库会对GIS开发效率提高极大的帮助。
参考文献
[1]ArcGIS10.1 help.
[2]朱道强,关海涛.Python在ArcGIS中的应用 [J]. 测绘与空间地理信息, 2013, 36(7): 152-154.
[3]邵保华,田学志.基于Python的Arcgis地理处理应用研究 [J]. 林业勘查设计, 2012, (2).
基金项目
湛江市科技攻关计划项目
python语法总结
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。