文件操作一:文件操作01):文件读取:(r 只读)
001):我们先在当前文件夹内创建txt文件取名为123,在其中添加几句话内容。        f 称之为文件句柄,控制着 123 这个文本文档
        f=open(",mode="r",encoding="utf-8")
        print(f.read()) -->读取文本的全部内容
        content=f.read(4)  #读取文本中的前4个数据
        print(content)
        content=f.readline()  #读取第一行数据
        content=f.readlines() #读取全部内容,返回的结果是列表。而且是有换行符  \n
        打印例子:['哎呦喂,客官今天吃点啥嘞\n', '来个烤猪蹄吧\n', '烤猪蹄卖完']
        可以用 strip()去掉空格和换行符
    002:)无限循环案例:
    f=open(",mode="r",encoding="utf-8")
        while 1:   #while 1  会执行无限循环,当起循环完文件中内容后,就不段循环换行符,所以后面出现很多空白
        count=f.readline()
        print(count)
    003):绝对路径和相对路径的问题           1. 绝对路径(当文件路径是固定的时候)
           从磁盘根目录找文件。  windows下用的就是c,d,e,f, linux: \user\bin\xxxx
                  比如 :D:\BaiduNetdiskDownload\旺财的粮食\第一天的吃的食物.txt
       2. 相对路径(用的多)
            相对路径相对于当前程序所在的文件夹
                 ../ 表示上一层文件夹

                 \n \t 转义字符。 有固定的含义的。 推荐用r
               rD:\BaiduNetdiskDownload\旺财的粮食\第一天的吃的食物.txt
    004):文件句柄:f
       文件句柄是可以迭代的,例如:
          f=open(",mode="r",encoding="utf-8")
          for i in f:      #读取文中的文内容,一行一行的读取。每读取一次将值交给前面的变量i
              print(i)
          打印结果是有换行和空格的,但是可以用.strip 去掉换行和空格
02):文件写入(只写w)
    !!!!!重点重点重点!!!!!!会清空全文件的内容
  001):w 写步骤 : 先清空原文件的所有内容,再写入
     f=open(",mode="w",encoding="utf-8")
        f.write("哎呦,打尖还是住店呀!")
        f.close()    #从文件中可以看到,多了一个名为 456  的文本文件,
                      而且文本文中还是有内容的!
        #f.write("6789\n")  \n  将写入的内容增加在下一行
    002):文本文件的复制
     f1=open(r",mode="r",encoding="utf-8") #r 是为了去掉换行
        f2=open(r",mode="w",encoding="utf-8")  #w会将123  里面的内容先清空  再执行后面的语句
        for i in f1:
            f2.write(i)  #将f1 文件里面的内容一行一行迭代,每迭代一次就将内容复制给f2
        print(f1,f2)   #  执行这条操作后,两个文件的内容会完全一样
        #在执行上面操作时候,发现f1 和f2 的内容一模一样了。
03):b(bytes)
(b  读取是字节,用来操作非文本文字,像视频,图片等)

有 rb(读取非文本的内容)  wb(写非文本的内容)   ab (增加非文本内容)
     实际操练:将d盘的图片 复制到f盘
     操作代码:
     #将D盘的   哈哈哈.jpg    图片复制到f盘中
     f1=open(r"D:\哈哈哈.jpg",mode="rb")
     f2=open(r"E:\哈哈哈.jpg",mode="wb")
     for i in f1:    #分批量的读取数据
         f2.write(i)    # open()出来的结果可以使用read或者write. 根据mode来看
                                #将循环出来的内容i  复制给f2
     f1.close()
     f2.close()
04):读写操作( r+ )  + 是代表是扩展的意思(其他:w+  写读操作,a+ 追加写读操作)    例子:    001):r+()读写操作    #读写操作要先 读取,在写入内容(写入的内容会在文本最末端)
    正确例子:
       f=open(",mode="r+",encoding="utf-8")
       f1=f.read()       #必须是先读取,再写入,不然会覆盖原本文档里面的内容
       f.write("哎呦喂")
       print(f1)
       #结果是  我们在读取后,只会显示999这个文件的里面的内容,后面增加的内容没有被打印出来!
    

错误例子:
       f=open(",mode="r+",encoding="utf-8")
       f.write("哎呦喂")
       content=f.read()
       print(content)  #执行程序后  原文件999  的文件里面的前几个数据被“哎呦喂” 给覆盖了
       所以必须要先读取,再写入才行!
     r+不论你怎么读取,先读后再写入,增加的内容都是在文本的最末位
        f=open(",mode="r+",encoding="utf-8")
        count=f.read()
        f.write("zhnedea")
        print(count)
        #可以到999的文本文件,读取答应出来的是文本的原来的内容,但是去999的文件看下,可以看到文本文件
        最后面增加了我们写入的文件   "zhendea"

错误例子


     002):w+ 写读 (一定要记住 w 会先清空原来内容然后再写入,牢记呀)

f=open(",mode="w+",encoding="utf-8")
        f.write("这个是增加的内容")
        count=f.read()
        print(count)   #去999文本文件看,原文件被清空了,只有新增加的内容!
        f.close()
    003):a+(追加读写)
    不论光标在何处,写入的时候都是在末尾。(按键盘上上 insert  光标就出来了 )
        f=open(",mode="a+",encoding="utf-8")
        f.write("hahahah")
        f.write("hhdjfhadhfidanf")
        count=f.read()
        print(count)
        #解释:不论光标在何处,写入的时候都在末尾,(末尾指的是:光标在原内容的最后面,不是在增加后的内容的最后面)
05):修改⽂件以及另⼀种打开⽂件的⽅式 
    ⽂件修改: 只能将⽂件中的内容读取到内存中, 将信息修改完毕, 然后将源⽂件删除, 将新
    ⽂件的名字改成老⽂件的名字
    

# ⽂件修改import os
with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
content = f1.read()
new_content = content.replace("冰糖葫芦", "⼤⽩梨")
f2.write(new_content)
os.remove("⼩娃娃") # 删除源⽂件
os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂

文件修改案例

弊端: ⼀次将所有内容进⾏读取. 内存溢出. 解决⽅案: ⼀⾏⼀⾏的读取和操作 
 import os
 with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
 open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
 for line in f1:
 new_line = line.replace("⼤⽩梨", "冰糖葫芦")
 f2.write(new_line)
 os.remove("⼩娃娃") # 删除源⽂件
 os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂件

解决方案

												

python学习之路---day008的更多相关文章

  1. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  2. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  3. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  4. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  5. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  8. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

  9. Python学习之路——pycharm的第一个项目

    Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...

随机推荐

  1. 【原创】9. MYSQL++中的Field、FieldNames以及FieldTypes类型

    mysqlpp::Field其实使用的并不多,主要在于Result.h中ResultBase以及他的派生类型(UseQueryResult和StoreQueryResult)的几个获取下一个field ...

  2. selector在color和drawable目录下的区别

    selector作为drawable资源时,放于drawable目录下,并且item指定android:drawable属性,引用使用@drawable而不是@color selector作为colo ...

  3. memcache 随笔

    第一次用可能有很多不足的地方  以后慢慢改进. memcache  是一个简单的键/值对    是通过键和值储存信息到memcache中 ,通过特定的键请求来返回信息. 信息会无限期的保留在内存中 : ...

  4. 项目二:品优购 第二天 AngularJS使用 brand商品页面的增删改查

    品优购电商系统开发 第2章 品牌管理 传智播客.黑马程序员 1.前端框架AngularJS入门 1.1 AngularJS简介 AngularJS  诞生于2009年,由Misko Hevery 等人 ...

  5. Ubuntu16.04 ARM平台移植libcurl curl-7.63.0

    libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, P ...

  6. WCF把书读薄(3)——数据契约、消息契约与错误契约

    上一篇:WCF把书读薄(2)——消息交换.服务实例.会话与并发 十二.数据契约 在实际应用当中数据不可能仅仅是以int Add(int num1, int num2)这种简单的几个int的方式进行传输 ...

  7. Eclipse下Android的NDK开发环境配置

    编辑2016年7月26日——增加了下载网址,修改了一些错误. 摸索了一周,走了很多弯路,磕磕绊绊,总算是弄好了NDK的开发环境,在这里总结一下吧. 一.Android NDK开发环境 首先下载安装JR ...

  8. python之numpy文件操作

    目录 numpy 中的文件操作总结 CVS文件 多维数据的存取 numpy 的便捷文件存取 numpy 中的文件操作总结 CVS文件 CSV (Comma‐Separated Value,逗号分隔值) ...

  9. windows phone之依赖属性(DependencyProperty)

    Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统.由 WPF ...

  10. 基于任务的异步编程模式(TAP)

    异步编程是C#5.0的一个重要改进,提供两个关键字:async和await.使用异步编程,方法的调用是在后台运行(通常在线程或任务的帮助下),但不会阻塞调用线程.异步模式分为3种:异步模式.基于事件的 ...