目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
任务7.3  文本文件

文件的定位-seek()方法

根据文件的编码方式,可以将文件分为文本文件和二进制文件。

文本文件由字符组成,因此也便于显示,可读性强。

二进制文件将数据以在内存中的存储形式存放到磁盘文件中。

(三)文本文件

Python文件读写操作的基本流程是:

打开文件获得文件对象;

将文件对象赋给一个变量;

通过这个变量对文件内的数据进行读写操作。



(1)文件定位方法     seek()

fp.seek(offset , whence=0)

fp打开的文件必须允许随机访问

在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)偏移offset个字节

whence参数可选,默认值为0

返回当前的读写位置

>>> fp = open('testseek.dat', 'wb+')

>>> fp.write(b'Hello,word!')

11

>>> fp.seek(0)

0

>>> s = fp.read(5)

>>> s

b'Hello'

>>> fp.seek(-5, 2)

6

>>> s = fp.read()

>>> s

b'word!'

>>> fp.seek(3, 0)

3

>>> fp.read(3)

b'lo,'

>>> fp.seek(2, 1)

8

>>> fp.read(3)

b'rd!'

>>> fp.close()

例:文件中头部插入一个新行

f= open('companies.txt', 'r+')

lines = f.readlines()

f.seek(0)

f.write('Information\n')      # 覆盖模式

f.close()


例:文件中头部插入一个新行

f= open('companies.txt', 'r+')

lines = f.readlines()

for i in range(0, len(lines)):

      lines[i] = str(i+1) + ' ' + lines[i]

lines.insert(0, 'Information\n')

f.seek(0)

f.writelines(lines)

f.close()


(2)文件的定位-tell()方法

fp.tell()   返回文件的当前读写位置

>>> fp = open('testseek.dat', 'rb+')

>>> fp.tell()

0

>>> fp.read(5)

b'Hello'

>>> fp.tell()

5

>>> fp.close()

(3)文件的其他操作

文件的其他方法及属性

方法

功能

f.flush()

将写缓冲区的数据写入文件

f.truncate(size=None)

将文件截取为给定大小的字节(如果未指定大小,则为当前文件读写位置)。当前文件读写位置没有改变

f.closed

文件关闭属性,当文件关闭时为True,否则为False

f.fileno()

返回文件描述符(整数)

f.readable()

判断文件是否可读,是返回True,否返回False

f.writable()

判断文件是否可写,是返回True,否返回False

f.seekable()

判断文件是否支持随机访问,是返回True,否返回False

f.isatty()

判断文件是否交互(如连接到一个终端设备),是返回True,否返回False


With语句——文件异常处理

with open('companies.txt', 'r+') as f:

       lines = f.readlines()

       for i in range(len(lines)):

              lines[i] = str(i+1) + ' ' + lines[i]

       f.seek(0)

       f.writelines(lines)