博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 08 文件操作
阅读量:6086 次
发布时间:2019-06-20

本文共 5143 字,大约阅读时间需要 17 分钟。

01 今日内容大纲

02 昨日内容回顾以及作业讲解

  1. 数据类型的补充

    • str:pass
    • tuple:
      • (1) ----> int ('alex') ----> str
      • count index
    • list:
      • sort sort(reverse= True) reverse()
      • 列表相加 列表与数字相乘:
      • 循环列表的问题
    • dict:
      • update 更新,增加值,修改值,创建字典,将一个字典的所有键值对覆盖添加到另一个字典。
      • dict.fromkeys(iterable,value) # 面试经常考
      • 循环字典的问题。
    • 数据类型的转换:0,{},[],set(),'',None
  2. 编码的进阶:

    ​ ASCII, gbk,Unicode,utf-8 big5........

    1. 所有的编码本(除去Unicode之外)不能直接互相识别。

    2. 在内存中所有的数据必须是unicode编码存在,除去bytes。

      int

      bool

      tuple str bytes

      list

      dict

      set

​ str bytes

​ 称呼: 文字文本 字节文本

​ '' "" """ """ ''' ''' b'' b"" ........

​ Unicode 非Unicode

03 今日内容

  1. 文件操作的初识

    • 护士空姐少妇的联系方式.txt

    • 利用python代码写一个很low的软件,去操作文件。

      • 文件路径:path
      • 打开方式:读,写,追加,读写,写读......
      • 编码方式:utf-8,gbk ,gb2312......
    • f1 = open('d:\主妇空姐模特联系方式.txt',encoding='utf-8',mode='r')content = f1.read()print(content)  #print打印会自带一个\nf1.close()
    • 代码解释:

      open 内置函数,open底层调用的是操作系统的接口。f1,变量,f1,fh,file_handler,f_h,文件句柄。 对文件进行的任何操作,都得通过文件句柄. 的方式。encoding:可以不写,不写参数,默认编码本:操作系统的默认的编码windows: gbk。linux: utf-8.mac : utf-8.f1.close() 关闭文件句柄。
    • 文件操作的三部曲:

      • 1, 打开文件。
      • 2,对文件句柄进行相应操作。
      • 3,关闭文件。
    • 报错原因:

      • UnicodeDecodeError:文件存储时与文件打开时编码本运用不一致。

      • 第二个错误: 路径分隔符产生的问题:

        • r'C:\Users\oldboy\Desktop\主妇空姐模特联系方式.txt'
  2. 文件操作的读

    r , rb, r+,r+b 四种模式

    ​ r: read()** read(n) readline() readlines()

    ​ for ***

    ​ rb: 操作的是非文本的文件。图片,视频,音频。

    # read 全部读出来  **# f = open('文件的读', encoding='utf-8')# content = f.read()# print(content,type(content))# f.close()# read(n) 按照字符读取# f = open('文件的读', encoding='utf-8')# content = f.read(5)# print(content)# f.close()# readline()# f = open('文件的读', encoding='utf-8')# print(f.readline())# print(f.readline())# print(f.readline())  # f.close()跟着光标走,一个print并不会将内容全部打印,只会打印一行,如果是readlines(),则会将每行为单位放入一个列表当中# readlines() 返回一个列表,列表中的每个元素是源文件的每一行。# f = open('文件的读', encoding='utf-8')# l1 = f.readlines()# for line in l1:#     print(line)# # print(l1)# f.close()这里的for line in l1很怪,如果是没有l1=f.readlines(),则可以for line in f或者f.readlines():,这两个等效,一旦有l1=f.readlines(),则不能遍历f和f.readline(),只能遍历l1# for 读取# f = open('文件的读', encoding='utf-8')# # ['abc太白金星最帅\n', '老男孩最好的老师\n', '老男孩教育是最好的学校\n', 'fhsjdkfha\n', 'fhdsfads\n']# for line in f:???????#     print(line)# f.close()# f = open('美女.jpg',mode='rb')# content = f.read()# print(content)# f.close()
  3. 文件操作的写

    w,wb, w+,w+b 四种模式

    # 没有文件,创建文件,写入内容# f = open('文件的写',encoding='utf-8',mode='w')# f.write('随便写一点')# f.close()# 如果文件存在,先清空原文件内容,在写入新内容# f = open('文件的写',encoding='utf-8',mode='w')# f.write('太白最帅....')# f.close()# wb# f = open('美女.jpg',mode='rb')# content = f.read()# # print(content)# f.close()## f1 = open('美女2.jpg',mode='wb')# f1.write(content)# f1.close()
  4. 文件操作的追加

    a, ab, a+,a+b 四种模式

    # 没有文件创建文件,追加内容# f = open('文件的追加',encoding='utf-8',mode='a')# f.write('太白最帅....')# f.close()# 有文件,在原文件的最后面追加内容。# f = open('文件的追加',encoding='utf-8',mode='a')# f.write('大壮,舒淇,b哥,雪飞')# f.close()
  5. 文件操作的其他模式 r+

    # 读并追加  # 顺序不能错误。# f = open('文件的读写', encoding='utf-8', mode='r+')# content = f.read()# print(content)# f.write('人的一切痛苦,本质都是对自己无能的愤怒。')# f.close()# 错误示例:# f = open('文件的读写', encoding='utf-8', mode='r+')# f.write('人的一切痛苦,,,本质都是对自己无能的愤怒,,,')# content = f.read()# print(content)# f.close()
  6. 文件操作的其他功能

    总结:

    ​ 三个大方向:

    读,四种模式: r rb r+ r+b

    写,四种模式 : w,wb, w+,w+b

    追加 四种模式: a, ab, a+,a+b

    相应的功能:对文件句柄的操作:read read(n) readline() readlines() write()

    # tell 获取光标的位置 单位字节。(这个要是中文呢,中文不是三个字节?)# f = open('文件的读写', encoding='utf-8')# print(f.tell())# content = f.read()# # print(content)# print(f.tell())# f.close()# seek 调整光标的位置# f = open('文件的读写', encoding='utf-8')# f.seek(7)# content = f.read()# print(content)# f.close()如果是中文的由于字节的原因会报错# flush 强制刷新# f = open('文件的其他功能', encoding='utf-8',mode='w')# f.write('fdshdsjgsdlkjfdf')# f.flush()# f.close()
  7. 打开文件的另一种方式

    # 优点1: 不用手动关闭文件句柄# with open('文件的读',encoding='utf-8') as f1:#     print(f1.read())# 优点2:with open('文件的读', encoding='utf-8') as f1,\        open('文件的写', encoding='utf-8', mode='w')as f2:    print(f1.read())    f2.write('hfdsjkghkajhsdjg')# 缺点:待续。
  8. 文件操作的改

    • 文件操作改的流程:
      1, 以读的模式打开原文件。
      2,以写的模式创建一个新文件。
      3,将原文件的内容读出来修改成新内容,写入新文件。
      4,将原文件删除。
      5,将新文件重命名成原文件。
    • 具体代码:
    # low版# import os# # 1, 以读的模式打开原文件。# # 2,以写的模式创建一个新文件。# with open('alex自述',encoding='utf-8') as f1,\#     open('alex自述.bak',encoding='utf-8',mode='w') as f2:# # 3,将原文件的内容读出来修改成新内容,写入新文件。#     old_content = f1.read()#     new_content = old_content.replace('alex', 'SB')#     f2.write(new_content)# os.remove('alex自述')# os.rename('alex自述.bak','alex自述')# 进阶版:import os# 1, 以读的模式打开原文件。# 2,以写的模式创建一个新文件。with open('alex自述',encoding='utf-8') as f1,\    open('alex自述.bak',encoding='utf-8',mode='w') as f2:# 3,将原文件的内容读出来修改成新内容,写入新文件。    for line in f1:        # 第一次循环 SB是老男孩python发起人,创建人。        new_line = line.replace('SB', 'alex') ##这里的new_line,不能写成line=line.replace('',''),然后再进行f2.write()的操作/要么是设置新的变量new_line,要么就直接                                                                                                                                f2.write(line.replace('sb','alex'))        f2.write(new_line)os.remove('alex自述')os.rename('alex自述.bak','alex自述')# 有关清空的问题:# 关闭文件句柄,再次以w模式打开此文件时,才会清空。# with open('文件的写', encoding='utf-8',mode='w') as f1:#     for i in range(9):#         f1.write('恢复贷款首付款')

04 今日总结

  • 文件操作:
    • r w a rb wb r+ ab 重点记
    • read() write tell seek flush
    • 文件的改的代码必须会默写。

05 预习内容

  • 函数的初识

转载于:https://www.cnblogs.com/miseryGOD/p/10833185.html

你可能感兴趣的文章
关于javascript中的变量对象和活动对象
查看>>
int main(int argc,char* argv[])参数详解
查看>>
Linux Kernel文件系统写I/O流程代码分析(一)
查看>>
matplotlib.pyplot画图笔记
查看>>
James Munkres Topology: Sec 22 Example 1
查看>>
测试第一次上机报告 3013218151 叶乔菲
查看>>
localStorage之本地储存
查看>>
最快下载速度100Mbps!4G LTE技术全解析
查看>>
怎么将手动设定的IP变成固定的自动IP.
查看>>
POJ 1976 A Mini Locomotive
查看>>
javascript 键值对
查看>>
[python IDE] 舒服的pycharm设置
查看>>
分形图形神器XaoS
查看>>
一些面试题记录
查看>>
curl采集初历
查看>>
QT可执行程序添加静态库----数据库篇
查看>>
浅谈MySql的存储引擎(表类型)
查看>>
软件验收测试通过准则
查看>>
linux字符设备驱动学习笔记(一):简单的字符设备驱动
查看>>
Lowest Common Ancestor of a Binary Search Tree
查看>>