美文网首页
python ->函数->文件IO(面向对象)

python ->函数->文件IO(面向对象)

作者: 也是如此 | 来源:发表于2018-07-23 20:43 被阅读20次

1 IO

(1)系统中的文件,都是二进制文件,机器才能识别并执行操作
操作系统中的文件:
文本文件:记事本打开不会出现乱码的文件
二进制文件:记事本打开会出现乱码的现象
(2)在python中操作系统文件
import os
1.创建文件夹:创建如下文件夹:d:/oswork/demo01.txt

#创建文件夹:os.makedirs()(创建多个级联的文件夹)/mkdir(创建一个文件夹)
import os
#创建文件夹
os.mkdir("d:/os_work")

#创建文件
open("d:/os_work/demo01.txt","x")

2.重命名一个文件

import os

os.rename("d:/oswork/demo01.txt","d:/oswork/demo01.py")

3.删除一个文件

import os

os.remove("d:/oswork/demo01.py")

4.查看某个文件夹下所有文件

import  os
#查看某个文件夹下的所有文件
#f_list = os.listdir("D:/360驱动大师目录")
#print(f_list)


def check_files(s_path)
    if os.path.isfile(s_path):
        print("这是一个文件夹:",s_path)
    if os.path.isdir(s_path):
        print("这是一个文件夹:",s_path)
        f_list = os.listdir(s_path)
        for file in f_list:
            check_flies(s_path + "/" + file)
check_files("d:/360驱动大师目录")

2 os

可以直接操作系统文件
创建文件
删除文件
重命名文件
查询文件信息|遍历文件

1.操作系统中的文本文件,内容
文本文件的内容:文件内容
写入文件--写入指定内容->是否追加(不追加,每次写入数据时覆盖原有数据)
读取文件-读取文件中的内容
打开文件
open(file, mode='r', buffering=-1, encoding=None,errors=None, newline=None, closefd=True, opener=None)
参数列表:
file:要操作的文件对象,或者文件名称(路径【相对路径|绝对路径】)
mode:操作方式
t:text 默认操作,文本文件
b:binary 操作二进制文件
a:append 追加操作文件
w:write 向文件中写入内容
r:read: 从文件中读取内容
+:打开一个文件即可以写入数据也可以读取数据

案例开发:

#操作文本数据,读取数据
#打开文件
f = open("D:/测试文件、test1/data.txt")
#读取文件
c = f.read()
#展示文件
print(c)
#关闭文件
f.close()

向文件中写入数据
打开文件->定义数据->写入数据->关闭文件

import os 
#coding utf-8
#打开文件
#mode = "w":写入数据时,会清空原有数据,mode = "a":追加数据
f = open("data.txt",mode = "a")
#定义数据
a = "你好"
#写入数据
f.write(a)
#关闭文件
f.close()

文件拷贝
1 确定源文件
2 确定目标文件
3 拷贝

def  copy_file(src,dst):
    #拷贝文件中的函数,src:源文件  dst:目标文件
    #二进制的话 “r”,“w”为“rb”,"wb"
    #打开源文件和目标文件
    a = open(src,"r")
    b = open(dst,"w")
    #拷贝
    concent = a.read()
    b.write(concent)
    #关闭
    a.close()
    b.close()
#测试是否成功
copy_file("data.txt","data[文件备份].txt")

二进制文件拷贝以及存在的问题
文本文件拷贝时不会有太大问题,文本文件一般不会很大
拷贝时,是一次拷贝选中的一个文件,存入缓存,一旦文件过大,电脑缓存将会不够,造成内存溢出,因此需要限制一次拷贝的大小,分多次拷贝完成

def copy_file(src,dst):
    #打开文件
    s = open(src,"rb")
    d = open(dst,"wb")
    #原始操作方式
    #concent = s.read()
    #d.write(concent)

    #实现大体积数据的拷贝时
    #限制一次只能读取1024字节
    buff = 1024
    concent = s.read(buff)  #第一次读取数据
    
    #开始循环操作
    while concent:
        d.write(concent)
        concent = s.read(buff)
    
#关闭
    d.close()
    s.close()

src = "d:/video/study.mp4"
dst = "e:/one.mp4"
copy_file(src,dst)

with的操作
with语句:是python提供用来快捷操作文件的一种语法结构,主要简化了文件在操作过程中,由于各种失误或者异常造成的文件错误关闭,二衍生出来的一种操作方式

with语法结构:
with open(要打开的文件,操作模式)as 文件存储的变量:
通过变量操作文件

#尝龟操作
#f = open("data.txt","w")
with open("data.txt","w") as f:
    f.write("hello with!")
 #二进制文件,自动打开,操作,关闭
with.open("movie.jpg","rb") as f:
    f.read()
    print(f)

#简化文件复制操作
def copy_file(src,dst):
    #快捷操作方式:打开文件src
    with open(src,"rb") as s:
        #文件复制
        buff = 1024
        content = s.read(buff)

        while concent:
              d.write(concent)
                concent = s.read(buff)

相关文章

网友评论

      本文标题:python ->函数->文件IO(面向对象)

      本文链接:https://www.haomeiwen.com/subject/lrzjmftx.html