python 文件操作

文件操作基本循的方式首先需要文件路径,其次对于文件的编码方式进行选择,最后执行操作。

 

文件操作:

  1.文件路径:

    绝对路径:将文件的全部路径完全输入,从而查找到文件

    相对路径:在当前目录下打开,或查找文件

f = open('C:\你好.txt', mode='r',encoding= 'utf-8')
s = f.read()
print(s)
f.close()
#绝对路径查找

f = open('你好.txt', mode='r',encoding= 'utf-8')
s = f.read()
print(s)
f.close()
#相对路径查找,注意需要在和文件在相同的目录下才能查找到.

   2.编码方式:

    基本的编码方式,utf-8,gbk等

    在打开文件之前需要确定文件的编码方式是什么,因此用encoding = ‘’来确认编码方式。

 

  3.操作方法:

    有只读  ‘r’,读写‘r+’,写读‘w+’,只写‘w’

文件格式:

  f == 变量,表示问一个文件句柄,代表一个文件的开头。

  open是windows自带的系统功能,python调用打开文件,

  并且windows的默认编码方式为‘gbk’,不输入encoding时会自动使用‘gbk’编码

  liunx默认的编码方式为utf-8

  结尾务必带上f.close()

  #文件流程:打开文件--------产生文件句柄------对文件进行操作-------关闭文件

 

文件的读写:

  1.读:

    ‘r’,只读模式,读的方式有五种:

    ’rb‘,二进制读取模式,主要用来对图片视频进行转化为二进制读取。

    'r+' 读写模式,读取之后在进入写入模式,并且光标随着读而移动

    ’r+b‘ 二进制读写模式,对图片视频等进行写入。

     1.全部读出来:  f.read()------占内存 

f = open('C:\你好.txt', mode='r',encoding= 'utf-8')
s = f.read()  #全部读取
print(s)
f.close()

      2.一行一行读取:  f.readline() ------ 效率不太高

f = open('C:\你好.txt', mode='r',encoding= 'utf-8')#需要在c盘创建一个文件
s = f.readline()
print(s)
print(s)
print(s)
print(s)
f.close()

       3.将原文件的每一行作为一个列表的元素输出---------太占内存

f = open('C:\你好.txt', mode='r',encoding= 'utf-8')
s = f.readlines()  #变成列表输出,每个元素都有\n在末尾 
print(s)
f.close()

 

     4.按照字符去读,在‘r’模式下,但是在‘rb‘模式下会按照字节的模式来读取

f = open('C:\你好.txt', mode='r',encoding= 'utf-8')
s = f.read(5)# 取出前五个自字符
print(s)#替换掉他!  #符号也算。
f.close()

f = open('C:\你好.txt', mode='rb')#调整为rb模式的时候编码方式改变,用bytes类型读取,利用二进制解码,所以不需要编码。
s = f.read(5)# 取出前五个自字符
print(s)#'\xe6\x9b\xbf\xe6\x8d'
f.close()

     5.循环读取,读一行删一行,只占用一行内存。

('C:\你好.txt', mode='r',encoding= 'utf-8')
for i in f:
    print(i)
f.close()

   

2.写

  ’w‘ 只写入

  1.没有文件则会创建 一个新的文件,并写入内容。

  2.有文件的时候,将原文件内容清空并写入内容。

  ’w+‘先写入然后读取,写读,需要注意的是光标的移动问题。

  

  ’w+b‘写读,只是使用的是二进制的当时写读,并且能够处理图片等各种其他格式的文件。

 

 

3.追加

  ’a‘ 只追加写模式,不可读;不存在则创建;存在则只追加内容,

  

  'a+'追加写读模式,先追加写入后再读取。

  

  ’a+b‘追加写度模式,并且使用二进制

 

 

4.光标问题:
  在文件中写入内容时候,写入的地点由光标决定,

  f.tell() == 显示光标的位置#按照字节显示

  f.seek()== 更改光标的位置,按照字节更改! 

5.其他方法:

  truncate方法: 截断数据,仅保留指定之前数据 

  writetable:判断文件是否可以写入

  readtable : 判断问价是否可以读取

6.关闭问题:

  f.close()是在内存中关闭文件,有一定可能残留在应用程序里面,

  del f  是在程序中删除,完全清空。

7.with open()as f:

  1.避免忘记关闭文件,此程序自动关闭。

  2.一次性操作多个文件句柄

  

8#######重点!!

  所有输入的底层原理。

  1.将原文件读取到内存

  2.在内存中进行修改,形成新的字符串文件。

  3.将新的字符串写入新文件

  4.将源文件删除

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

import os
with open('你的名字',encoding = 'utf-8') as f1,\
    open('你的名字.fuzhi',encoding = 'utf-8',mode ='w') as f2:
            s = f1.read()
            f2.write(s.resplace('你好','hello'))
os.remove('你的名字')
os.rename('你的名字.fuzhi','你的名字')

 

posted @ 2018-03-27 20:13  残烛月夜  阅读(177)  评论(0)    收藏  举报