5:文件指针操作函数 tell() seek()
(1):tell()判断文件指针当前所处的位置
lua
复制代码
f = open("log.txt", 'r', encoding="utf-8") print(f.tell()) print(f.read(10)) print(f.tell())
输出:
arduino
复制代码
0 https://gu 10
(2):seek()将文件指针移动至指定位置
语法:
bash
复制代码
file.seek(offset[, whence])
其中,各个参数的含义如下:
file:表示文件对象;
whence:作为可选参数,用于指定文件指针要放置的位置,该参数的参数值有 3 个选择:0 代表文件头(默认值)、1 代表当前位置、2 代表文件尾。
offset:表示相对于 whence 位置文件指针的偏移量,正数表示向后偏移,负数表示向前偏移。例如,当whence == 0 &&offset == 3(即 seek(3,0) ),表示文件指针移动至距离文件开头处 3 个字符的位置;当whence == 1 &&offset == 5(即 seek(5,1) ),表示文件指针向后移动,移动至距离当前位置 5 个字符处。
示例:
scss
复制代码
f = open('log.txt', 'r', encoding="utf-8") # 判断文件指针的位置 print(f.tell()) # 读取一个字节,文件指针自动后移1个数据 print(f.read(1)) print(f.tell()) # 将文件指针从文件开头,向后移动到 5 个字符的位置 f.seek(5) print(f.tell()) print(f.read(1)) # 将文件指针从当前位置,向后移动到 5 个字符的位置 f.seek(1, 0) print(f.tell()) print(f.read(1)) # 将文件指针从文件结尾,向前移动到距离 2 个字符的位置 f.seek(5, 0) print(f.tell()) print(f.read(1))
输出:
复制代码
0 h 1 5 : 1 t 5 :
四:python with语句
使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经打开的文件。
with表达式其实是try-finally的简写形式。但是又不是全相同。
python
复制代码
""" 格式 with context [as var]: pass """
尝试一下,我项目根目录下有一个header.jpg文件。复制一个headerCopy.jpg,代码如下:
python
复制代码
with open("header.jpg", 'rb') as src_file: with open("headerCopy.jpg", 'wb') as target_file: target_file.write(src_file.read())
可以看到,通过使用 with as 语句,即便最终没有关闭文件,修改文件内容的操作也能成功。
因此,一般在操作文件的时候,我们通常采用with语句。
With除了处理文件使用之外,还可以做其他使用:
python
复制代码
class test(object): def __enter__(self): print("enter方法被调用!") return self def __exit__(self, exc_type, exc_val, exc_tb): print("销毁中~") def show(self): print("show方法被调用") with test() as src_file: src_file.show()
输出:
复制代码
enter方法被调用! 我是方法 销毁中~
有好的建议,请在下方输入你的评论。