美文网首页
python入门系列:文件操作

python入门系列:文件操作

作者: Java丶python攻城狮 | 来源:发表于2019-02-13 18:38 被阅读0次

    操作模式

    r

    """

    以只读方式打开文件(默认),文件的指针会放在文件的开头

    若文件不存在,会报错

    """

    f = open("a.txt", "r") # 在同级目录下打开文件

    content = f.read()

    print(content)

    w

    """

    以只写方式打开文件,文件的指针也在文件开头,进行覆盖写入(先清空后写入)

    若文件不存在,会创建一个新的文件

    """

    f = open("a.txt", "w")

    f.write("66666")

    a

    # 与 w唯一不同的是,文件的指针会放在文件的末尾

    增加b操作

    """

    以二进制的方式进行文件操作 rb, wb, ab

    将一张图片的一半内容写入到另外一个图片中

    第二章图片可以打开浏览,是只有第一张一半的内容,还是图片质量下降呢?大家可以试一下

    """

    fromFile = open("pic.jpg", "rb")

    content = fromFile.read()

    fromFile.close()

    writeLen = len(conten) // 2

    toFile = open("pic2.jpg", "wb")

    toFile.write(content[0:writeLen])

    toFile.close()

    文件指针的定位

    """

    seek(offset, whence=0)

    whence表示指定文件指针所在的位置

    whence=0:文件开始处,offset >= 0

    whence=1:当前的位置,offset is free

    whence=2:文件结尾处,offset <= 0

    但是对于不带 b的文件操作,whence只能为 0

    """

    f = open("a.txt", "r") # 当前文件内容:12345678

    print(f.tell()) # 获得当前文件指针的位置 0

    f.seek(2) # 向后移动两个单位

    print(f.tell()) # 2

    print(f.read()) # 345678

    print(f.tell()) # 8

    文件读操作

    f.read(length):

    # length默认是文件所有内容的长度,文件指针自动向后移动

    f = open("a.txt", "r") # 文件内容:12345

    content = f.read(2)

    print(content) # 12

    print(f.tell()) # 4

    readline(limit):

    # 读取一行数据,会读入文件中的换行符

    # limit:限制的最大字符数

    f = open("a.txt", "r") # 文件内容:123456

    print(f.readline(), end='') # 123

    print(f.readline(), end='') # 456

    readlines():

    # 按照换行符对文件内容进行处理,处理好的每一行组成一个列表返回

    f = open("a.txt", "r") # 文件内容:123456

    printf(f.readlines()) # ['123', '456']

    遍历

    # 直接遍历文件

    f = open("a.txt", "r")

    for i in f:

    print(i, end='')

    # 遍历 readlines()的结果

    lines = f.readlines()

    for line in f:

    print(line, end='')

    文件关闭

    释放系统资源

    将内存缓冲区中的内容同步到磁盘中

    文件写入内容时,并不是立即写入到磁盘文件,而是在对应的内存缓冲区做修改,当文件关闭时,再一次性将这些修改拷贝到磁盘。

    f.flush() 可以强制刷新内容到磁盘。

    其他操作

    依赖于os模块

    重命名

    import os

    os.rename("b.txt", "a.txt") # 更改文件名称

    os.rename("dir1", "dir2") # 更改目录名称

    删除

    import os

    os.remove("b.txt") # 删除 b.txt

    os.rmdir("dir1/dir2") # 删除了 dir2目录,若目录不为空,则无法删除

    os.rmdirs("dir1/dir2") # 递归删除,若dir1为空,也删除

    创建目录

    import os

    # mkdir(path, mode) # mode=0o777 //权限设定方式参照 Linux

    os.mkdir("dir1") # 一次只能创建一个目录,不能递归创建多个目录

    路径相关操作

    # os.getcwd() 获得当前的目录

    # os.chdir() 改变当前所在路径

    # os.listdir() 获得目录下文件列表

    文件相关案例

    文件复制

    import os

    # 只读模式,打开要复制的文件

    # 追加模式,打开副本文件

    scr_file = open("d.txt", "r", encoding="utf-8")

    obj_file = open("d_copy.txt", "w", encoding="utf-8")

    # 从源文件中读取内容,写入到目标文件

    while True:

    content = scr_file.read(1024) # 如果文件过大,分块写入

    if not content:

    break

    else:

    obj_file.write(content)

    # 关闭源文件和目标文件

    scr_file.close()

    obj_file.close()

    文件分类,生成文件清单

    import os

    file_list = os.listdir(".")

    res = {}

    for file in file_list:

    if "." not in file: # 排除掉目录

    continue

    appendix = file.split(".")[-1] # 获得扩展名

    if appendix not in res:

    res[appendix] = []

    res[appendix].append(file)

    print(res)

    注:喜欢python + qun:839383765 可以获取Python各类免费最新入门学习资料!

    相关文章

      网友评论

          本文标题:python入门系列:文件操作

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