Python--小甲鱼学习笔记--第28课:文件(文件打开方式、文件对象方法)
2017-12-21 22:21
916 查看
1.open()函数定义:open(file, mode=’r’,buffering=1,encoding=None, errors=None, newline=None, closefd=True, opener=None)(前面两个参数重要学习)
0.下边只有一种方式不能打开文件,请问是哪一种,为什么?
B不能正常打开文件,Windows在路径名中既可以接受斜线(/)也可以接受反斜线(\),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双行转义,否则Python会将反斜线进行转义,例如(\n)看成一个换行符,(\t)看作一个制表符等。
1.打开一个文件我们使用open()函数,通过设置文件的打开模式,决定打开的文件具有那些性质,请问默认的打开模式是什么呢?
默认是只读方式打开文件:open(file, mode=’r’)
2.请问>>> open('E: \\Test.bin' , 'xb' )是以什么样的模式打开文件的?
以可写及二进制模式打开文件“E: \Test.bin”。
这里要注意的是’x’和’ w’均是以“可写入”的模式打开文件,但以’x’模式打开的时候,如果路径下已经存在相同的文件名,会抛出异常,而直接覆盖同名文件。因此,’w’模式打开文件会比较危险,容易导致此前的内容遗失,因此使用’w’模式打开文件前先检查该文件名是否已经存在显得非常重要
3.尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然使用f.
close()将文件对象“关闭”,这是为什么呢?
因为Python会缓存你的写入数据,那么在断电的时候,那些缓存的数据根本不会写入到文件中。
4.如何将一个文件对象(f)中的数据存放进列表中?
直接使用list(f)
5.如何迭代打印出文件对象(f)中的每一行数据?
6.文件对象的内置方法f.read([size=-1])作用是读取文件对象内容,size参数是可选的,那如果设置了size=10,例如f.read(10),将返回什么?
返回从当前文件指针开始的连续10个字符
7. 如何获得文件对象(f)当前文件指针的位置?
f.tell()返回当前文件指针位置。
8.还是视频中的那个演示文件(record.txt),请问为何f.seek(45,0)不会出错,但f.seek(46)就出错了呢?
f.seek()定位的文件指针是按字节为单位计算的,文件record.txt以GBK进行编码,一个汉字为两字节,f.seek(45)的位置恰好位于字符“小”的开始位置,故可正常打印,而f.seek(46)定位的位置位于字符“小”的中间位置,而按照GBK的编码规则将无法将其解码!
9.试尝试将文件(OpenMe.mp3)打印到屏幕上。
运行结果如下:
10.编写代码,将上一题中的文件(OpenMe.mp3)保存为新文件(OpenMe.txt)
0.下边只有一种方式不能打开文件,请问是哪一种,为什么?
>>> f = open('E:/test.txt','w') #A >>> f = open('E:\test.txt','w') #B >>> f = open('E://test.txt','w') #C >>> f = open('E:\\test.txt','w') #D
B不能正常打开文件,Windows在路径名中既可以接受斜线(/)也可以接受反斜线(\),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双行转义,否则Python会将反斜线进行转义,例如(\n)看成一个换行符,(\t)看作一个制表符等。
1.打开一个文件我们使用open()函数,通过设置文件的打开模式,决定打开的文件具有那些性质,请问默认的打开模式是什么呢?
默认是只读方式打开文件:open(file, mode=’r’)
2.请问>>> open('E: \\Test.bin' , 'xb' )是以什么样的模式打开文件的?
以可写及二进制模式打开文件“E: \Test.bin”。
这里要注意的是’x’和’ w’均是以“可写入”的模式打开文件,但以’x’模式打开的时候,如果路径下已经存在相同的文件名,会抛出异常,而直接覆盖同名文件。因此,’w’模式打开文件会比较危险,容易导致此前的内容遗失,因此使用’w’模式打开文件前先检查该文件名是否已经存在显得非常重要
3.尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然使用f.
close()将文件对象“关闭”,这是为什么呢?
因为Python会缓存你的写入数据,那么在断电的时候,那些缓存的数据根本不会写入到文件中。
4.如何将一个文件对象(f)中的数据存放进列表中?
直接使用list(f)
5.如何迭代打印出文件对象(f)中的每一行数据?
for each_line in f: print(each_line)
6.文件对象的内置方法f.read([size=-1])作用是读取文件对象内容,size参数是可选的,那如果设置了size=10,例如f.read(10),将返回什么?
返回从当前文件指针开始的连续10个字符
7. 如何获得文件对象(f)当前文件指针的位置?
f.tell()返回当前文件指针位置。
8.还是视频中的那个演示文件(record.txt),请问为何f.seek(45,0)不会出错,但f.seek(46)就出错了呢?
>>> f.seek(46) 46 >>> f.readline() Traceback (most recent call last): Flie "<pyshell#18>", line 1, in <module> f.readline() UnicodeDecodeError: 'gbk' codec can't decode byte 0xe3 in possition 4:illegal multibyte sequence
f.seek()定位的文件指针是按字节为单位计算的,文件record.txt以GBK进行编码,一个汉字为两字节,f.seek(45)的位置恰好位于字符“小”的开始位置,故可正常打印,而f.seek(46)定位的位置位于字符“小”的中间位置,而按照GBK的编码规则将无法将其解码!
9.试尝试将文件(OpenMe.mp3)打印到屏幕上。
f = open('D:\\OpenMe.mp3') for each_line in f: print(each_line,end='') f.close()
运行结果如下:
10.编写代码,将上一题中的文件(OpenMe.mp3)保存为新文件(OpenMe.txt)
f1 = open(r'D:\OpenMe.mp3',’r’) f2 = open(r'D:\OpenMe.txt’,’w’) for each_line in f1: f2.write(each_line) f1.close() f2.close()
相关文章推荐
- Python中文件的打开模式和文件对象方法
- Python学习笔记-XML大文件的XSD验证方法
- python学习笔记十 类文件对象
- 【python学习笔记】4:精度控制/文件读/split()方法
- open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
- Python 学习笔记——文件对象和操作
- Python--小甲鱼学习笔记--第30课:文件系统(os、os.path)
- python菜鸟笔记--python关于json对象的使用方法学习
- python-IDE-spyder自动设置时间,作者、联系方式的方法--python学习笔记27
- python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法
- Python3学习笔记10-标准库之正则、时间、路径、文件管理、存储对象
- 【JavaEE学习笔记】Servlet_02_创建Servlet方法,获取文件,响应对象
- 小甲鱼python教程第28-29讲--python文件:笔记习题及答案
- python机器学习及实践学习笔记1-如何打开ipynb后缀文件
- Python学习笔记——文件对象和操作(1)
- NetworkX学习笔记-3-Python中输出Gephi文件格式的方法
- Python学习笔记:open()函数打开文件路径报错问题
- Java学习笔记之swing文件选取器 例子 (4种读写文件方式-和图片的读写方法)
- python 学习笔记(5) 文件I/O及方法