文件操作

文件操作

主要内容:

       一,  基本的操作

                打开文件的几种方式:

                                                  1,  r   只读模式(r, rb)

                                                  2,  w    只写模式(w, wb)

                                                  3.  a     追加模式(a, ab)

                                                  4,  r+    读写(追加写读)(a, ab) 

                                                  5,  w+   写读

                                                  6,  a+     写读(追加写读)

        二,  文件操作

             1.   格式(r   只读模式):  当在读的情况下是不能写的

                       

f = open("你好",  mode = "r"   encoding = "utf-8"  )
s = f.read()
f.close()   #  关闭句柄
print(s)

           注意:文件名的添加还有不要忘记f.colse关闭句柄

                   路径有两种:  1,相对路径(相当于当前程序的文件夹)

                                        2,绝对路径(相当于根目录寻找想要的文件夹)

                       ../../    这个符号表示返回上上层的文件夹

                        一般使用相对路径

               2.   格式(w     只写模式):   当在写的模式下是不能读的

f = open("nihao",  mode = "w"  , encoding = "utf-8")  #写入之前会清掉原来的内容
f.write("dushinuian")
f.flush
f.close
print(f)

                 3.   格式(a    追加)

  

f =open("xiaohushi',  mode = 'a',  encoding = 'uft-8') #在原来的基础上进行追加内容
f,write("xiao ")
f,flush
f,clo se

                 4.   格式(rb    读的是字节)

f = open('x' , mode = 'rb' )   #  读取的内容直接就是字节
bs = f.rede()
print(bs.decode('utf-8'))   #  需要解码
f.close

                   5.  格式(wb   写的是字节)

f = open('x' , mode = 'wb' )   #  写的内容直接就是字节
f.write("你好啊".encoding("utf-8"))  #需要编码
f.close

                   6.  格式(r+   读写)       带b的处理的是非文本

f = open('x' , mode = 'r+',  encoding = "utf-8" )   #r+默认情况下光标在文件的开头
bs = f.rede()                
f.write("小周")                       
f.flush                               #先写后读会对文件造成不同的伤害,比如删除开头的内容
f.close
print(bs)  
                                       

                    7.格式(w+   写读)

f = open('x' , mode = 'w+',  encoding = "utf-8" )   #w  操作.会清空原来的内容
f.write("你好")
f.seek(0)             #移动光标
s = f.read()
f.flush()
f.close()

 

     二,   光标的移动

          1        f.seek()表示

              seek(n)光标移动到n位置,注意,移动的单位是byte,所以如果utf-8de 中文部分要是3的倍数

                通常我们使用seek都是移动到开头或者结尾.

                 移动到开头:seek(0)

                 移动到末尾:seek(0,2)seek的第二个参数表示的是从哪个位置进行位置偏移,默认是0,便是开头,1表示当前位置,2表示结尾

         

f = ('xiao',  mode = 'r+'  encoding = 'utf-8')
f.seek(0)    #是把光标移开头
s = s.read()  #读取人内容.此时光标移动到末尾
print(s)
f.seek(0)     #是把光标移动到开头
d.seek(0,2)   #是把光标移动到末尾
s1 = f,read()  #读取内容什么都没有
print(s1)

f.seek(0)   #把光标移动到开头
f.write('你好'')   #写入信息.此时光标在9   中文3*3 = 9


f.flush()
f.close()

      truncate()  截断文件

               是删除光标后面的所有的内容

      修改文件以及另一种打开文件的方式

            文件修改:只能将文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除.将新文件的名字改成老文件的名字.

inport  os
with open("小娃娃",mode = "r", encoding = "utf-8")as  f1,\
        open("小娃娃_new",mode = "r", encoding = "utf-8")as  f2:
        content = f1.read()
        new_content = content.replace('你好'',"大白梨")
        f2.write(new_content)
        os.remove("小娃娃")       #删除源文件
        os.rename("⼩小娃娃_new", "⼩小娃娃")     #重命名新文件

                    五个英文单词:

                                   1.  open         打开

                                   2.mode          模式

                                   3.encoding     编码,译码

                                   4. read            读取

                                   5.  write           写

 

 

  表格的相关处理

 1 lst = []
 2 
 3 with open("2018-08-06.log", mode="r", encoding="utf-8") as f:
 4     first = f.readline().strip().split(",")
 5     for line in f:
 6         dic = {} # 每一行一个字典
 7         # 1,alex,10086,特斯拉
 8         ls = line.strip().split(",")
 9         for i in range(len(first)):
10             dic[first[i]] = ls[i]
11 
12         lst.append(dic)
13 
14 print(lst)

 

posted @ 2018-07-12 10:22  7411  阅读(69)  评论(0)    收藏  举报