文件操作初识

编码的进阶:

  英文:

    str:

      在内存中的编码:unicode

      表现形式:'taibai'

    bytes:

      在内存中的编码: 非unicode

      表现形式: b'taibai'

   中文:

      以什么编码就以什么解码!!!

str--->gbk bytes

s1 = 'a太白'
b1 = s1.encode('gbk')
print(b1)   #b'a\xcc\xab\xb0\xd7'
b2 = b1.decode('gbk')
print(b2)   #a太白

utf-8 bytes ---> str unicode

s2 = b'a\xe5\xa4\xaa\xe7\x99\xbd'
b3 = s2.decode('utf-8')
print(b3)  #先将s2转换成unicode
s = b3.encode('gbk')
print(s) #再将b3转换成gbk

文件操作初识

  f 变量: f,f1,file,fh,file_handler........    文件句柄

  具体操作:

    读    写     读写    写读   等等

文件的读:

  四种模式:

  r   r+   rb   r+b

  每种模式下又有5种读文件

    1. read()  全部读写

f1 = open('练习',encoding= 'utf-8')
content = f1.read()
print(content,type(content))
f1.close()

    2.read(n)

f1 = open ('练习',encoding = 'utf-8')
print(f1,read(3))
f1.close

    3.readline()

f1 = open ('练习',encoding = 'utf-8')
print(f1.readline().strip())
print(f1.readline().strip())
f1.close()

    4.readlines()

f1 = open ('练习', encoding = 'utf-8')
print(f1.readlines())
f1.close()

    5.循环读取  ***********最好的*************

f1 = open ('练习', encoding = 'utf-8')
for i line in f1:
        print(line)
f1.close

 

文件的写

  w     w+     wb    w+b

  w:

没有文件 创建文件  写入内容

f = open ('练习',encoding = 'utf-8',mode = 'w')

f.write('你想些什么就写什么')

f.close()

 

文件的追加

  a:

f = open ('练习',encoding = 'utf-8',mode = 'a')
f.write('这是追加的内容')
f.close()

运用最多的还是    r   r+    其次是   w   和  a  

     网络:  rb    wb

其他操作方法

  seek    tell

f1 = open ('练习',encoding = 'utf-8')
f1.seek(9)  #按照字节调整光标位置
print(f1.read())
f1.close()



f1 = open ('练习2',encoding = 'utf-8')
print(f1.tell())    #获取光标的位置
print(f1.read())
f1.close()

    总结: read   flush   seek  tell   readable   writeable

文件的第二种打开方式:

with open('练习',encoding = 'utf-8') as f1:
    print(f.read())
with open('练习',encoding = 'utf-8') as f,\
        open('新练习',encoding = 'utf-8',mode = 'w') as f2:
    print(f.read())
    f2.write('给新练习增加新内容')
    f2.write('又给它增加一点新的内容')

 

文件的改

  一共五个步骤:

    1.以读的模式打开原文件

    2.以写的模式创建一个新文件

import os
with open ('练习',encoding = 'utf -8') as f1,\
    open('增加的新文件',encoding = 'urf-8',mode = 'w') as f2:

    3.将原文件内容读出来,按照你的要求改成新内容,写入新文件

    for old_line in f1:
        new_line = old_line.replace('你的','我的')
        f2.write(new_line)

    4.删除原文件

os.remove('练习')

    5.将新文件重命名成原文件

os.rename('增加的新文件','练习')

深浅copy:

  浅copy:

    无论是同一个代码块还是不同代码块下:

    只copy原类型的外壳,外壳里面的元素共用(元素为可变数据类型的话,会同步改变;如果是改不可变数据,会创建新数据赋值给被改变数据的原内存地址   即  -->谁改变,谁显示)

  深copy:

    无论是同一个代码块还是不同代码块下:

    不仅copy原类型的外壳,而且外壳里面的可变数据类型也创建一个新的地址,且改不可变数据会创建新数据赋值给被改变数据的原内存地址     即  -->谁改变,谁显示

posted @ 2019-03-08 14:39  .如影随行  阅读(118)  评论(0编辑  收藏  举报