ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十五课(文件操作、)

ParisGabriel

每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰

 

                      Python人工智能从入门到精通

最近简直要死了 发烧感冒 喉咙痛。。。。、

如何长期保存计算机中数据:
需要文件操作

  文件 file:
    文件是用于数据存储的单位
    文件通常用来长期储存数据
    文件中的数据以字节为单位进行顺序储存
文件的操作流程:
  1.打开文件
  2.读/写文件
  3.关闭文件
  注:
    任何操作系统, 一个应用程序同时打开文件数量有最大数
文件打开函数:
  open(file, mode=‘rt’) 用于打开一个文件, 返回此文件流对象,
  如果打开文件失败, 则会触发osError错误
文件的关闭方法:
  F.colse() #关闭问津 释放系统资源

示例:

# 此示例示意文件的打开和关闭操作
try:
    f = open(‘./aaa.txt‘)  # 不存在此文件
    # f = open(‘./myfile.txt‘)  # 不存在此文件
    print("打开文件成功")

    # 此处要进行读/写操作

    f.close()  # 半闭文件
except OSError:
    print("文件打开失败")

文件方法:

文件

mode 模式字符的含义

字符 含义
‘r‘ 以只读方式打开(默认)
‘w‘ 以只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开)
‘x‘ 创建一个新文件, 并以写模式打开这个文件,如果文件存在则会产生"FileExistsError"错误
‘a‘ 以只写文件打开一个文件,如果有原文件则追加到文件末尾
‘b‘ 用二进制模式打开
‘t‘ 文本文件模式打开 (默认)
‘+‘ 为更新内容打开一个磁盘文件 (可读可写)
  • 缺省模式是 ‘rt‘
  • ‘w+b‘ 可以实现二进制随机读写,当打开文件时,文件内容将被清零
  • ‘r+b‘ 以二进制读和更新模式打开文件,打开文件时不会清空文件内容
  • ‘r+‘ 以文本模式读和更新模式打开文件,打开文件时不会清空文件内容

python 文件常用方法:

方法 说明
F.close() 关闭文件(关闭后文件不能再读写会发生ValueError错误)
F.readline() 读取一行数据, 如果到达文件尾则返回空行
F.readlines(max_chars=-1) 返回每行字符串的列表,max_chars为最大字符(或字节)数
F.writelines(lines) 将字符串的列表或字符串的列表中的内容写入文件
二进制文件操作方法  
F.read(size=-1) 从一个文件流中最多读取size个字符(文本文件)或字节(二进制文件),如果不给出参数,则默认读取文件中全部的内容并返回
F.write(text) 写一个字符串到文件流中,返回写入的字符数(文本文件)或字节数(二进制文件)
F.tell() 返回当前文件流读写指针的绝对位置(字节为单位)
F.seek(offset, whence=0) 改变数据流读写指针的位置,返回新的绝对位置
F.flush() 把写入文件对象的缓存内容写入到磁盘
   
F.readable() 判断这个文件是否可读,可读返回True,否则返回False
F.writable() 判断这个文件是否可写,可写返回True,否则返回False
F.seekable() 返回这个文件对象是否支持随机定位
F.truncate(pos = None) 剪掉 自pos位置之后的数据,返回新的文件长度

文本文件操作:
  操作模式:
  ‘t’
  说明:
    1.默认文件储存的都为字节数据, 在读写过程会自动进行编解码操作
    2.文本文件以行位单位进行分割, 在python内部统一用"\n"做为换行符进行分割
    3.对文本文件的读写操作需要用字符串(str)进行数据操作
Linux换行符: ‘\n‘
Windows 换行符: ‘\r\n‘
新的Mac OS 换行符: ‘\n‘
旧的Macintosh换行符: ‘\r‘(已不用了)

文件流对象是可迭代对象, 迭代过程中将换行符“\n”作为分隔符

    f = open(‘phonenumber.txt‘)
    for line in f:
        print(line)  # 打印每一行的数据

标准输入输出文件:
  sys.stdin    标准输入文件
  Ctrl + D      输入文件结束符
  sys.stdout    标准输出文件
  sys.stderr       标准错误输出文件
  标准文件绝对不能关闭
Linux系统内所有的硬件都会映射成文件 关闭文件会导致错误
模块:sys
注:
  标准文件不需要打开和关闭就可以使用
示例:

import sys

sys.stdout.write("我是标准输出\n")
sys.stderr.write("我是一个错误\n")

import sys

s = sys.stdin.read()
print("s=", s)

print("程序结束")

二进制文件操作:
  二进制文件操作模式字符:‘b’
  默认文件中存储的是以字节数据为单位通常有人为规定格式
  二进制文件操作需要用字节串进行读写
  F.read()/F.readline() F.readlines()返回类型
对于文本操作
  F.write() 对于二进制文件也需要用字节串进行操作
  F.tell
  作用:
    返回当前的读写位置(从文件头以字节为单位)
  F.seek方法:
    F.seek(偏移量,whence=相对位置)
  偏移量
    大于0的数代表向文件尾方向移动的字节数
    小于0的数代表向文件头方向移动的字节数
  相对位置
    0代表从文件头开始偏移
    1代表从文件当前位置开始偏移
    2代表从文件尾开始偏移 (第一个参数必须是负的)
示例:

# 此示例示意用seek改变文件的读写位置,用tell来得到读写位置

f = open(‘myseek.txt‘, ‘rb‘)
b = f.read(2)  # b‘AB‘ 读取出来
print(b)  # b‘AB

# 从头开始向后走5个字节
# f.seek(5, 0)

# 从当前位置向后走3个字节
# f.seek(3, 1)

# 从文件尾向前数15个字节
f.seek(-15, 2)

b = f.read(5)
print(b)  # b‘abcde‘

f.close()

汉字编码(只讲两种)
  国标系列:
    GB18030(二字节或四字节编码27553个字)
    GBk(二字节编码21003个字)
    GB2312(二字节编码6763个字)
    (Windows 常用)
  国际标准Unicode <---> UTF-8 (Ascii 占1字节 汉字占3字节)
    (Linux Mac OS X / IOS /Android)
    python编码字符串:
    ‘gb18030’
    ‘gb2312’
    ‘gbk’
    ‘utf-8’
    ‘ascii’
    ....
以上字符串用于encide和decode中
编码注释:
  在Python源文件中的第一行第二行写入如下内容:
    # -*- codeing:gbk -*-
    #设置源文件编码格式为gbk
    或
    # -*- codeing:utf-8 -*-
    #设置源文件编码格式为utf-8
  作用:
    告诉解释执行器文件的编码是什么

练习:
自己写一个文件 ‘info.txt‘ 内部存一些文字信息
如:
张三 20 100
李四 21 96
小王 22 98
写程序将这些数据读取出来,打印到终端上

答案:

try:
    f = open("myfile.txt")
    L = f.readlines()
    for x in L:
        s = x.strip()
        n, a, s = s.split()
        print("姓名:", n, "年龄:", int(a), "成绩:", int(s))
except:
    print("打开文件是失败")

练习:
1. 写程序,循环输入很多个人的姓名,电话号码,
当输入结束后将这些信息存入到文件phonenumber.txt中
(建议先用列表暂存数据,格式自己定义)

  2. 写程序,将phonenumber.txt文件中的数据读取出来.
     再用以下格式打印出来:
如:
小张 的电话是 13888888888
小李 的电话是 13999999999

练习:
1. 写程序实现复制文件的功能
要求:
1. 要考虑特大文件问题
2. 要关闭文件
3. 要能复制二进制文件
如:
请输入源文件路径名: /home/tarena/xxx.tar.gz
请输入目标文件路径名: ./a.tar.gz
显示:
文件已成功复制

答案:

def copy_myfile():
    try:
        ypath = input("please inout raw path:")
        xpath = input("please inout new path:")
        f1 = open(xpath, "w+b")
        f = open(ypath, "r+b")
        for x in f:
            f1.write(x)
        f1.close()
        f.close()
    print("File copied")
    except:
        print("file not inexeistence")

copy_myfile()

2. 修改学生信息管理程序,要求加入两个功能:
9) 保存信息到文件(si.txt)

L = [{"name": "Tom", "age": 20, "score": 98},
     {"name": "Lin", "age": 21, "score": 99},
     {"name": "Garin", "age": 19, "score": 100}]

def student_file(L):
    try:
        f = open("./si.txt", "x")
        for x in L:
            f.write(x["name"])
            f.write(" ")
            f.write(str(x["age"]))
            f.write(" ")
            f.write(str(x["score"]))
            f.write("\n")
    except FileExistsError:
        f = open("./si.txt", "a")
        for x in L:
            f.write(x["name"])
            f.write(" ")
            f.write(str(x["age"]))
            f.write(" ")
            f.write(str(x["score"]))
            f.write("\n")

student_file(L)

10) 从文件中读取数据(si.tx

..................

原文地址:https://www.cnblogs.com/ParisGabriel/p/9357601.html

时间: 2024-12-08 18:29:37

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十五课(文件操作、)的相关文章

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十课(包、模块 的导入)

$ pip3 install tensorflow : 第三方模块 tensorflow 的安装 电脑必须有网 命令行自动下载安装dir(模块名): 查看模块所有属性 自定义模块导入 示例: 自定义模块的实现方法 def myfac(n): print('正在计算', n, '的阶乘') def mysum(n): print("正在计算1+2+3+...+%d的和" % n) name1 = "Audi" name2 = "TESLA" pri

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十三课(每周总结:2)

ParisGabriel 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 week summer: Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细小的功能,一系列函数的任意组合可以完成 大问题 函数仅接受输入并产生输入,不包含任何影响输出的内部 状态函数的可重用性: 如果一个函数的输入参数一定,则返回结果必须一定的函数 称为可重用函数 可重入和不可重入就是访问除局部变量以外的变量函数式编程要求: def 创建函数最好不要访问局部作用域

ParisGabriel:Python全栈工程师(0基础到精通)教程 第十三课

ParisGabriel 感谢 大家的支持  你们的阅读评价就是我最好的动力  我会坚持把排版内容以及偶尔的错误做的越来越好 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以      Python人工智能从入门到精通 集合 set:         集合是可变的容器         集合内的数据对象都是唯一的(不能重复的) 集合是无序的储存结构.集合中的数据没有先后顺序关系 集合内的元素必须是不可变对象 集合是可迭代对象 集合相当于只有键没有值得字典(键则是集合的数据) (相当

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十七课(类变量、方法、继承、覆盖)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 Python人工智能从入门到精通 补充: 实例方法都是操作实例对象的 属于此类对象的方法 实例变量 添加/修改属性: 对象.属性名 = 表达式 删除: del 对象.属性名 类 |          对象 | 实例 class  object     instance 类的本质上也是对象 类可以创建此类对象 ---------------------------------------------

ParisGabriel:Python全栈工程师(0基础到精通)教程 第十五课(函数嵌套、变量作用域)

ParisGabriel 感谢 大家的支持 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 Python人工智能从入门到精通 globals()/locals()函数: globals()返回当前全局作用域内变量的字典 locals() 返回当前局部作用域内变量的字典函数变量: 函数名是变量,它在def 语句创建时绑定函数 fa1 = fa 没有括号 绑定函数 fa1 = fa() 返回结果 函数的变量名可以序列交换算法一个函数可以作为另一个函数的实参传递: 例如: def m

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十一课(包、模块 的导入)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 补充:包的相对导入 只对后两种导入方式有用 包的相对导入 只对后两种导入方式有用 异常(基础)except: 什么是错误: 是指由于逻辑或语法等导程序无法正常执行的问题 什么是异常: 是程序出错的标识符的一种状态 当异常发时 程序不会再向下执行,而转去调用此函数的地方 待处理此错误并恢复为正常状态 异常的作用: 用作信号, 通知上层调用者有错误产生需要处理try 语句: 两种语