您的位置:首页 > 编程语言 > Python开发

Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数

2016-01-16 22:47 1006 查看
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作:

一:使用内置open()函数操作文件,基本语法如下:

with   open("test.log","r") as f: #文件的打开模式为只读r
a = f.readlines() #一次读取文件的所有行放入内存
print(a) #显示读取到的文件全部内容
print(type(a)) #显示读到的文件内容是列表,也就是要多读取到的内容做操作,需要使用列表的操作方法
#with语句会自动关闭文件,因此不需要使用f.close来关闭文件了


以下是文件打开时的模式,不同打开模式有不同的操作方法:

r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

r+:打开一个文件用于读写,文件指针将会放在文件的开头,此方法适用于在开头增加数据,如果要在末位添加数据本方法不适合,。

rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

rb+: 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

r打开方式总结:无论是是以r还是r+还是rb打开文件,指针都在文件的开头,r+可以读写文件,rb+以二进只读写方式打开文件

w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w打开文件方式总结:w方式可以读写文件,如果文件不存在都会创建,但是如果文件存在则会覆盖原文件内容,指针会在文件首部,因此不适用于操作有数据的文件。

a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入,a不能读文件

ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写,a与a+的区别是a不能读只能追加,a+可以读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

a打开文件总结:a用于在末位追加,但是不能读,ab以二进制操作,a+可以读写,如果见不存在就创建,存在则将指针放在末位,ab+出使用二进制以外同a,凡是操作加上+都可以读写。

r+U:在读文件的时候只以 \n 做换行符,U只能和r搭配使用,其他环境不能使用

二:open()内置函数的常用方法:

以下方法基于python2.7.10,python3大同小异:

假如有个文件,内容如下:

你好!
!nihao
!你好
现在使用open()函数的方法来操作打开此文件:

1.readline(self,size=None):一次读取一行数据到内存,如果要读取多行需要配合next()方法:

1 import smtplib
2 from email.mime.text import MIMEText
3 from email.utils import formataddr
4
5 def mail(user):
6     ret = True
7     try:
8         msg = MIMEText('邮件内容', 'plain', 'utf-8')
9         msg['From'] = formataddr(["张士杰",'rooroot@126.com'])
10         msg['To'] = formataddr(["测试邮件",'1669121886@qq.com'])
11         msg['Subject'] = "主题"
12
13         server = smtplib.SMTP("smtp.126.com", 25)
14         server.login("rooroot@126.com", "login password")
15         server.sendmail('rooroot@126.com', [user,], msg.as_string())
16         server.quit()
17         return  ret
18     except Exception:
19         ret = Flase
20
21 ret = mail("1669121886@qq.com")
22 if ret:
23     print("发送成功")
24 else:
25     print("发送失败")
26
27
28 执行结果:
29 发送成功


通过给函数传递参数发送邮件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: