python第八天

文件

  r  只读  :只能读不能改动

  f=open("  文件路径  ",  mode="  文件格式  ", encoding= "  编码格式  ")

        文件路径:   相对路径:   相对于你当前程序所在的文件夹

当执行文件和现文件不在同一个文件中时:   ../  表示返回上一层文件夹

       先退出去,再一层层找进来       ../../表示退两层文件夹

                     ../../file/wuse  表示退两层文件,进入file1文件,再进入wuse文件

             绝对路径  :     从磁盘根目录寻找

                   互联网上的绝对路径:   搜索东西时右键单击,获取地址

 文件--新建文件--"果园"-----文件内容:李子,提子,菠萝

  f=open( " 果园"  ,  mode="  r  "  ,   encoding="  utf-8  "  )

  s=f.read()======>当文件不存在时====>报错

  f.close()     

  print(s)=====>李子,提子,菠萝

   w 只写  :   只写,     只要  遇到  w  ,写入了啥,  最后就  只剩 啥

      只写过程中,   当文件存在时:    将原来内容覆盖只剩,写入的内容

            当文件不存在时:    会自己创建一个文件,将写入内容写入文件中

e.g

  f=open(" 果园 " , mode="  w  ",  encoding="  utf-8  ")

  f.write("  大白梨   ")======>  结果是  "   大白梨    "      原来的内容没有了,只剩大白梨

  f.flush()    

  f.close()

  a  追加    :   将写入的内容直接追加到文件内容后边

 e.g

  f=open(" 果园 " , mode="  a  ",  encoding="  utf-8  ")

  f.write("  西瓜  ")====>李子,提子,菠萝西瓜     #   直接在内容后边追加写入的内容

  f.flush()

  f.close()

  rb  只读(字节)

   e.g 

  f=open(" 果园 " , mode="  rb  ",  encoding="  utf-8  ")

  bs=f.read()  #读出来是字节的形式

  print(bs)====>  b'\xe4\x5\xh8,,,'

  print(bs.decode("utf-8"))=====>  解码后是    李子,提子,菠萝  #需要解码

  f.close

     wb     :  只写 ,只要看到  w  ,就覆盖

e.g

  f=open(" 果园 " , mode="  wb  ")

  f.write("桃"   .  encode("utf-8"))    ===>    "  桃  "#  看似是字节,但是用pycharm打开文件,却是  编好的文字

  f.close

  r    ,w   ,a   ====>    处理的是文本

  rb  ,wb,  ab ===>     处理的是非文本,,,,,,,b  表示的是字节  bytes

  r+   读写模式      :   只能先读  后写   ;

          因为默认情况下,光标是从文件开头开始的,    因此,必须先读后写

 e.g 

  f=open(" 果园 " , mode="  r +  ",  encoding="  utf-8  ")

  s=f.read()          #  先读后写 

  f.write("  苹果  ")

  f.flush()

  f.close()

  print(s)====>    运行结果:   李子,提子,菠萝    

          文件中:  李子,提子,菠萝苹果

  若先写后读

  f=open(" 果园 " , mode="  r +  ",  encoding="  utf-8  ")

  f.write("  苹果  ")

  s=f.read()          #  先写后读              由于默认情况下,光标是在文件开头的

  f.flush()

  f.close()

  print(s)====>    运行结果:          提子,菠萝

          文件结果:   苹果,提子,菠萝         结果出现错误    

    w+  :写读  

e.g 

  f=open("  果园  ",  mode="  w+  ",  encoding="  utf-8  ")

  f.write("  今天天气   ")

  s=f.read()

  print(s)=====>   啥都没有  #  因为  w  会将原来的内容清空所以打印出来  啥都没有

  f.flush()    文件中只有  "  今天天气   " 

  f.close()

  f.write("  今天天气   ")     

  f.seek(0)  #  将光标移至开头

  s=f.read    从光标开始读

  print(s)  ====>   今天天气

  f.flush()

  f.close

  r+例子拓展

  深坑;   先读后写   ,,,,,,,不能跟着光标走

      在  r+  模式中,         在没有任何操作前进行  写的东西,   都是在开头写入的

          若,  读了一些内容,再写  ,写入的东西都是在末尾

e.g

  文件名-精品,  内容-浓缩就是精品,潘长江是精品

  f=open("精品", mode=" r+ ",encoding=" utf-8 ")

  s=f.read(3)    #读3个字符

  ss=f.write(''  哈哈  ")    #不管前边读了几个字符,后边再写入的内容,或者进行的操作,都是在末尾进行的

  print(ss)====>浓缩就是精品,潘长江是精品哈哈  

  f=open("精品", mode=" r+ ",encoding=" utf-8 ")

  f.seek(3)    #将光标移动到3的位置,3是一个字,即移动到一个字的位置.

  f.seek(0)    #将光标移动到开头的位置

  f.seek(0,1) # 光标在当前位置

  f.seek(0,2)  #  将光标移动到结尾的位置

    超人的都是精品,

  f=open("精品", mode=" r+ ",encoding=" utf-8 ")

   f.seek(6)    #将光标移到第2个字的位置

  s=f.read(3)   # 读3个字

  print(s) =====>   的都是

  f.seek(0)   #  再将光标移到开头的位置

  ss=f.read(3)   #  再读三个字

  print(ss)  ====>   超人的

文件修改      

     import os   

    with  open("  果园  ",  mode="    ",  encoding=""  utf-8  ) as f1  ,\

      open("果园_副本",  mode="    ",  encoding=""  utf-8) as f2 

    s=f1.read()   #将f1 全部都出来            ====>for line in f1:

    ss=s.replace("子","果")    #   将子换成果,然后给了ss   ===>  s=line.replace("子","果")

    f2.write(ss)  #  将f2 副本   中的覆盖了,     原来的f1 没有变,====>  f2.write(s)

    os.remove  #   将原来的文件  " 果园  "删除

    os.rename   #     将   将"  果园_副本  ",重新命名为  " 果园  "   ,文件果园里的内容就等于修改了

  with open (      )  as f     相当于    f=open(    )

                  f.fluse(   )

                  f.close(   )

with open (      )  as f1   ,\       #   斜杠   \   ,表示  换行

  open (      )  as f2  

f=open("  果园  ",  mode="    ",  encoding=""  utf-8  )

s=f.readline()    #  一行一行的打印

print(s)=====>打印出来第一行

循环        #将每行一行一行打印出来

for  line  in  f:   #  将f的每行都交给 line

  print(line)

f.close()

f.readable()    # 判断文件是否可读

f.writeable()   #  判断文件是否可写入

l=f.readlines()

print(l)=[   ,   ,   ]       #会一行行打出来

赵本山范德彪淑芬刚子老头

f=open("马大帅",mode=" r+ ",encoding="utf-8")

f.seek(12)   #先将光标移到四的位置,

f.truncate()     #不给参数,表示从文件截取到光标的当前位置  =====>   赵本山范

f.truncate(15)   #给参数,表示从文件开头截取到这个参数位置=====>   赵本山范德

  

猜你喜欢

转载自www.cnblogs.com/lynysy/p/9296006.html
今日推荐