python进阶学习笔记(一)

简介:

本节讲文件的操作

-------------------------------

 

打开文件

 

open函数用来打开文件,语法如下:

open(name[, mode[,buffering]])

open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。假设我要打开我硬盘(I/python/test.txt) 文件,可以用下面方法:

>>> f = open(r'i:\python\test.txt')

 

open函数中模式参数的常用值

 

 

基本文件方法

 

打开文件是第一步,下面就需要对文件进行读或写,可以write 和 read方法进行读或写。

#写入文件内容
>>> f = open('test.txt','w')
>>> f.write('hello,')
>>> f.write('world!')
>>> f.close()

# 读取文件内容
>>> f = open('test.txt','r')
>>> f.read(4)   #读取前4个字符
'hell'
>>> f.read()   #读取剩余的所有字符
'o,world!'

关闭文件

  应该牢记使用close方法关闭文件。尽管一个文件对象在退出程序后会自动关闭,但关闭文件是没什么害处的,可以避免在某些操作系统或设置中进行无用的修改,这样做也会避免用完系统中打开文件的配额。

 

 

使用基本文件方法

 

假如test.txt文件包含如下内容:

-----------------------------

Welcome to this file

There is nothing here except

This stupid haiku

-----------------------------

下面是基本读文件的方法:

# read(n) 指定参数
>>> f = open(r'I:\python\test.txt')
>>> f.read(7)
'Welcome'
>>> f.read(4)
' to '
>>> f.close()

# read() 不指定参数
>>> f = open(r'I:\python\test.txt')
>>> print f.read()
Welcome to this file
There is nothing here except
This stupid haiku
>>> f.close()

# readline() 
>>> f = open(r'I:\python\test.txt')
>>> for i in range(3):
    print str(i) + ':' + f.readline()

    
0:Welcome to this file

1:There is nothing here except

2:This stupid haiku
>>> f.close()

#readlines()
>>> import pprint
>>> pprint.pprint(open(r'I:\python\test.txt').readlines())
['Welcome to this file\n',
 'There is nothing here except\n',
 'This stupid haiku']

readline返回一行的字符串, readlines返回包含文件所有内容的字符串列表每个元素是一行的字符串

pprint 模块的pprint方法将内容分成每个小项单行显示。

 

下面是写文件的基本方法:

>>> f = open(r'I:\python\test.txt','w')  #默认是读文件,可以不加‘r’,写文件一定要加’w’
>>> f.write('this\nis no \nhaiku')
>>> f.close()

 

>>> f = open(r'I:\python\test.txt')
>>> lines = f.readlines()
>>> lines[1] = "isn't a\n"
>>> f = open(r'I:\python\test.txt','w')
>>> f.writelines(lines)
>>> f.close()

 

 

对文件内容进行迭代

 

1、接字节处理

最常见的对文件内容进行迭代的方法是while循环中使用read方法。例如,对每个字符进行循环,可以用下面方法实现:

f = open(filename)
char = f.read(1)
while char:
    process(char)
    char = f.read(1)
f.close()

read方法返回的字符串会包含一个字符,直到文件末尾,read返回一个空的字符串,char将变为假。

可以看到,char = f.read(1) 被重复地使用,代码重复通过被认为是一件坏事,看看下面的方法:

f = open(filename)

while True:
    char = f.read(1)
    if not char: break
    process(char)
f.close()

这里break语句被频繁的使用(这样会让代码比较难懂),尽管如此,但它仍然要比前面的方法好。

 

2、读取所有内容

如果文件不是很大,那么可以使用不带参数的read方法一次读取整个文件,或者使用readlines方法。

#用read迭代每个字符
f = open(filename)
for char in f.read():
    process(char)
f.close()


#用readlines迭代行:
f = open(filename)
for line in f.readlines():
    process(line)
f.close()

 

3、用fileinput 来进行迭代

fileinput模块包含了打开文件的函数,,只需要传一个文件名给它



import fileinput
for line in fileinput.input(filename):
    process(line)

4、文件迭代器

好吧!这是python2.2之后才有的方法,如果它一开始就有,上面的方法也许就不存在了。文件对象是可以迭代的,这就意味着可以直接在for循环中对他们进行迭代

f = open(filename)
for line in f:
    process(line)
f.close()

 

再来看下面例子:

>>> f = open(r'I:\python\test.txt','w')
>>> f.write('First line\n')
>>> f.write('Second line\n')
>>> f.write('Third line\n')
>>> f.close()
>>> lines = list(open(r'I:\python\test.txt'))
>>> lines
['First line\n', 'Second line\n', 'Third line\n']
>>> first,second,third = open(r'I:\python\test.txt')
>>> first
'First line\n'
>>> second
'Second line\n'
>>> third
'Third line\n'

在这个例子中:

 

  •  使用序列来对一个打开的文件进行解包操作,把每行都放入一个单独的变理中,这么做是很有实用性的,因为一般不知道文件中有多少行,但它演示的文件的“迭代性”。
  •  在写文件后一定要关闭文件,这样才能确保数据被更新到硬盘。

 

 

目录
相关文章
|
2月前
|
存储 C语言 Python
【Python】学习笔记day3
【Python】学习笔记day3
27 1
|
4月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
在Python中进行自然语言处理(NLP)的进阶应用
在Python中进行自然语言处理(NLP)的进阶应用
43 3
|
1月前
|
前端开发 安全 JavaScript
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
|
17天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
17天前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
17天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
58 0
|
2月前
|
存储 C语言 芯片
【Python】学习笔记day1
【Python】学习笔记day1
34 1
|
2月前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
34 1
|
2月前
|
Python
探索Python集合推导式的进阶应用
探索Python集合推导式的进阶应用
|
4月前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
83 0