设为首页 收藏本站
查看: 819|回复: 0

[经验分享] Python初体验之基础语法(二)

[复制链接]

尚未签到

发表于 2015-11-29 12:10:50 | 显示全部楼层 |阅读模式
  所有测试语句基于Python 2.7.6 , Ubuntu 14.04 LTS
  自学Python,如果哪里说的不对,还请指正。谢谢。
  示例绝大部分来自博客园vamei的python教程
  1.文件读写操作

一. 按字节读取文件



#!/usr/bin/env python
#coding=UTF-8
#默认python编码是ASCII编码 要支持中文
#加上coding=UTF-8的声明
# open()打开文件 r只读 w写入 a追加 r+ w+ a+模式
# a+方式打开文件 指针指向结尾 , r方式 指针在文件头
# f.tell() 测试文件偏移位置 f.seek() 改变文件流
file = open('test.txt','r')
content = file.read(1024)  #读取N bytes字节数据
file.close()
print "按字节读取:",'\n',content
   DSC0000.png
  没有其他高级语言繁琐的文件流操作,open()函数拿到文件对象直接操作,简单粗暴。
  
  二. 按行读取文件



file = open('test.txt','r')
content = file.readline() # 读取一行
file.close()
print "按行读取:","\n",content
DSC0001.png
  记得使用完后,关闭文本对象。file.close()
  
  三.文件写入操作



#打开某个文件  如果没有则创建
file = open('temp.txt','w')
file.write('Python is good!\n') #擦除文件内容,且只能写一行
file.writelines(['Objective-c is bad!\n',
'Swift is wtf?\n','C# and Java which better'])
file.close()
file = open('temp.txt','rw')
content = file.readlines() #读取所有行,存储在列表中
file.close()
index = 0
while(index < len(content)):
print content[index]
index += 1
DSC0002.png
  往文件中写入多行内容,使用readlines() 读取所有行,并返回一个list对象。Python中对象的方法命名格式不是驼峰法,
  导致我经常写成类似readLines() 第二单词首字母的大写的形式,感觉Python的方法命名受c语言影响,这个还需要慢慢适应。
  

2.模块的简单使用
  先在test.py的目录下建立一个utils.py文件,我们将之前的写的判断闰年的函数和自定义的SuperList类放在一起,以便其他模块使用。



#!/usr/bin/env python
#coding=UTF-8
#自定义list子类 添加对类似 [1,2,3] - [2,3]运算的支持
#这种自带两个__下划线的方法 是特殊方法
class SuperList(list):
def __sub__(self,b):
#self是SuperList的对象,可以使用类似 list[:] 的方式表示整个list对象
a = self[:]
b = b[:]
#如果list包含b中的元素,就移除,直到循环结束 len()返回list中元素个数
while len(b) > 0 :
element_b = b.pop() #pop() 从list中弹出最后一个元素值,并返回他的值
if element_b in a :
a.remove(element_b)
return a
#这里的-减号运算符代表__sub__() 方法,类似+ 代表__add()__
#特殊方法和运算符相等价
#print SuperList([1,2,3,4]) - SuperList([1,2])

#函数定义  是否为闰年
def isLeafYear(year):
return year%400==0 or (year%100!=0 and year%4==0)
  
我们再建立一个model.py文件,将utils模块导入



#! /usr/bin/env python
#coding=UTF-8

import utils    #一个.py文件就构成一个模块
'''
import a as b         # 引入模块a,并将模块a重命名为b
from a import function1   # 从模块a中引入function1对象。调用a中对象时
# 我们不用再说明模块,即直接使用function1,而不是a.function1。
from a import *       #从模块a中引入所有对象 (类似Java的导包)
'''
#Python搜索模块顺序
'''
1. 程序所在的文件夹
2. 标准库的安装路径
3. 操作系统环境变量PYTHONPATH所包含的路径
'''
#模块.对象的方式来调用
a = utils.isLeafYear(2004)
print a
ls = utils.SuperList([2,3,4,5]) - utils.SuperList([1,2,5])
print ls
DSC0003.png
  通过导入的方式使用现成的方法或者类,这就和Java  C#中关于面向对象中类的操作比较相似了。
  

3.模块包
  将功能相关的模块放在一个文件夹下,通过import 模块包名.模块名  导入。
  文件夹名.文件名
  建立maths文件夹,新建一个__init__.py的空文件,告诉python这是一个模块包
DSC0004.png
  建立uitls.py文件,添加求平方和  求1~n个数字之和的函数如下:



#!/usr/bin/env python
#coding=UTF-8
#求两个数的n次方之和
def square_sum(a,b):
c = a**a + b**b
return a,b,c
#求1~n的和
def sum(n):
c = n*(n+1)/2
return c
  在home目录下建立test_01.py 如下



#!/usr/bin/env python
import maths.utils as function
print function.square_sum(1,2)
print function.sum(100)
DSC0005.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144903-1-1.html 上篇帖子: python 上传文件到服务器 下篇帖子: Python汉字转换成拼音
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表