zoukankan      html  css  js  c++  java
  • python中常用的文件和目录操作(一)

    常用的文件操作

    1. 打开文件

    • open,它是一个内置函数,可以直接调用
    • 语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象
    • 参数:file_name--要访问的文件名称的字符串值,access_mode--决定了打开文件的模式:只读、写入、追加等。这个参数是非强制的,默认文件访问模式为只读(r)
    • 返回值:返回一个文件对象
    模 式 解释
    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果不存在,则创建新文件
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果不存在,则创建新文件
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾。也就是说,新的内容将会被写入已有内容之后。如果该文件不存在,则创建新文件进行写入
    a+ 打开一个文件用于写入。如果文件已存在,文件指针将会放在文件的末尾。文件打开时会是追加模式。如果文件不存在,则创建新文件用于读写

    2. 关闭文件: file_object.close()

    3. 文件的读写操作

    read()方法:

    • read(size=-1)方法从一个打开的文件中读取一个字符串
    • 参数: size--传递你要读取的字节数,如果不传递,默认是-1,读取所有的数据,
    • 读完了之后。指针会定位到读完之后的位置
    • 返回值: size=0,返回b"",size<0,返回读取的所有的字节数,size>0,返回指定的字节数

    readline()方法:

    • 从文件读取整行,包括" "字符
    • 参数:size--如果传递一个非负的参数,返回指定大小的字节数
    • 返回值:返回从字符串中读取的字节

    readlines()方法:

    • 读取所有的行并返回字符串列表,如果碰到EOF则返回空字符串
    • 参数:无
    • 返回值:返回所有的字符串列表

    write()方法:

    • write()方法可将任何一个字符串写入一个打开的文件
    • 注意:write()方法不会在字符串的结尾添加换行符(" "),所以无法实现自动换行。需要自己手动添加" "来实现换行

    writelines()方法:

    • 传入你要写的列表内容,就可以写入多行

    4. 示例

    假设在pycharm的工作目录下新建了一个test.txt的文本文件,由于包含中文,我们保存时设置编码为"utf-8"。文件内容如下:

    name: Peter
    age: 29
    height: 175
    weight: 70
    country: 英国
    hobby: play-guitar

    读的方法

    #open()和read()方法
    
    fo = open("test.txt")
    
    content = fo.read()
    print(content)
    
    结果:
    锘縩ame: Peter
    age: 29
    height: 175
    weight: 70
    country: 鑻卞浗
    hobby: play-guitar
    
    乱码了,我们可以这样解决:
    
    fo = open("test.txt", encoding="utf-8")
    
    content = fo.read()
    print(content)
    
    结果:
    name: Peter
    age: 29
    height: 175
    weight: 70
    country: 英国
    hobby: play-guitar
    
    #readlines()方法
    fo = open("test.txt", encoding="utf-8")
    
    lines = fo.readlines()
    print(lines)
    
    ['ufeffname: Peter
    ', 'age: 29
    ', 'height: 175
    ', 'weight: 70
    ', 'country: 英国
    ', 'hobby: play-guitar
    ', '
    ']

    写的方法

    write()方法:如果文件已存在,会覆盖

    #write()方法
    
    fo = open("test.txt", "w")
    
    fo.write("city: London")

    fo.close() 我们打开test.txt文件会发现,文件只剩下: city: London

    注意:在同一个w模式下,两次写入时,第一次写入会已经存在的内容,第二次写入不会覆盖第一次写入的内容(可以理解为指针移了)

    fo = open("test.txt", "w", encoding="utf-8")
    
    fo.write("第一次写入会覆盖已经存在的内容,")
    fo.write("第二次写入不会覆盖第一次写入的内容")
    fo.close() 结果: 第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容

    write()无法实现自动换行,需要手动添加" "来实现换行

    fo = open("test.txt", "w", encoding="utf-8")
    
    fo.write("第一次写入会覆盖已经存在的内容,
    ")
    fo.write("第二次写入不会覆盖第一次写入的内容")
    
    fo.close()
    
    结果:
    
    第一次写入会覆盖已经存在的内容,
    第二次写入不会覆盖第一次写入的内容

    writelines()传递列表来写入多行,不会自动换行,需手动添加

    fo = open("test.txt", "w", encoding="utf-8")
    
    fo.write("第一次写入会覆盖已经存在的内容,
    ")
    fo.write("第二次写入不会覆盖第一次写入的内容
    ")
    fo.writelines(["111111
    ", "222222
    "])
    
    fo.close()
    
    结果
    
    第一次写入会覆盖已经存在的内容,
    第二次写入不会覆盖第一次写入的内容
    111111
    222222

    追加的方法

    fo = open("test.txt", "a", encoding="utf-8")
    fo.write("哈哈哈哈哈哈")
    
    fo.close()
    
    结果:
    
    第一次写入会覆盖已经存在的内容,
    第二次写入不会覆盖第一次写入的内容
    111111
    222222
    哈哈哈哈哈哈

    5. 文件定位

    tell()和seek()方法详见:【译】:文件对象的方法

  • 相关阅读:
    【反射】Java反射机制
    Composer教程之常用命令
    Composer教程之基础用法
    Composer教程之初识Composer
    Composer 的结构详解
    现代 PHP 新特性系列(七) —— 内置的 HTTP 服务器
    现代 PHP 新特性系列(一) —— 命名空间
    现代 PHP 新特性系列(二) —— 善用接口
    现代 PHP 新特性系列(三) —— Trait 概览
    现代 PHP 新特性系列(四) —— 生成器的创建和使用
  • 原文地址:https://www.cnblogs.com/my_captain/p/8975964.html
Copyright © 2011-2022 走看看