文件函数python 文件函数格式( 二 )


假设python当前目录下存在一个test.txt文件,其内容如下:
Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节 。类似于PHP和Perl语言 。
Python是交互式语言: 这意味着,您可以在一个 Python 提示符后直接执行代码 。
Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术 。
Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发 。
举例如下:
with open('test.txt','r',encoding='utf-8') as file:
line=file.read()line() # readline()方法可以读取文件一行数据,接下来就会讲到 。
print(line)
运行结果如下:
Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节 。类似于PHP和Perl语言 。
而此时 , 我们给该段代码with语句之外再增加一个读取文件的语句,代码如下:
with open('test.txt','r',encoding='utf-8') as file:
line=file.readline()
print(line)
line2=file.readline()
print(line2)
发现出现了如下错误提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/3.py", line 5, in
line2=file.readline()
ValueError: I/O operation on closed file.
意思是要读取的文件已经被关闭了 。
由此可知 , 当with语句运行结束后,被打开的test.txt文件就自动关闭了 。
15.4读取文件
在Python 中读取文件的方法有:
1、读取指定个数的字符
格式如下:
File.read([size])
其中,file为打开的文件对象 。size为可选参数,可以指定要读取的字符个数,省缺表示读取所有内容 。
在调用read()方法读取文件内容时,文件必须是以r(只读)或者r+(读写)方式打开 。
如:
with open('test.txt','r',encoding='utf-8') as file:
txt=file.read() (或txt=file.read(10))
print(txt)
将读取、输出test.txt文件的全部内容(或前10个字符) 。
2、移动文件的指针
对于刚打开的文件 , 文件指针总是指向文件头的 。也可以通过seek()方法将文件的指针移动到新的位置 。
格式如下:
file.seek(offset[,whence])
其中,file表示已经打开的文件对象;offset用于指定移动的字符个数;whence表示从哪个位置起始计算个数,其值为0表示从文件头开始计算 , 其值为1表示从当前位置开始计算,其值为2表示从文件尾开始计算,默认值为0 。
例如:
with open('test.txt','r',encoding='utf-8') as file:
string=file.read(9)
print('取9个字符: '+string)
file.seek(2) #指针从文件头开始移动2个字符
string=file.read(9) #从当前位置读取10个字符
输出结果:
取9个字符:
Python是一种
取9个字符:
thon是一种解释
而下面的代码会抛出错误:
with open('test.txt','r',encoding='utf-8') as file:
file.seek(2,1) #指针从当前位置开始移动2个字符
string=file.read(10) #从当前位置读取10个字符
print('取10个字符: '+string)
错误提示为:
Traceback (most recent call last):
File "C:UserszymAppDataLocalProgramsPythonPython393.py", line 7, in
file.seek(2,1) #指针从当前位置开始移动2个字符
io.UnsupportedOperation: can't do nonzero cur-relative seeks
原因在于,必须使用b模式(即rb)打开文件,才能使用whence参数 。但是,b模式(二进制)不适合文本文件 。对于test.txt这样的文本文件,为了解决通过改变指针读取任意位置字符,可以采用加一个位置变量的方法来存储指针的值 。

推荐阅读