0%

文件I/O

编程免不了要写配置文件,怎么写配置也是一门学问。YAML是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。

一、基础

  1. 标准输入输出

    • input函数,从默认标准输入键盘读取一行文本
    • print函数,将内容输出到默认标准输出设备屏幕
  2. 文件I/O

    • open函数,Python内置方法,打开一个文件(根据情况指定打开模式),创建并返回一个file对象,常用模式:
      • t:文本模式(默认)。
      • +:打开一个文件进行更新(可读可写)。
      • r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
      • r+:打开一个文件用于读写。文件指针将会放在文件的开头。
      • w:打开一个文件只用于写入。
        • 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
        • 如果该文件不存在,创建新文件。
      • w+:打开一个文件用于读写。
        • 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
        • 如果该文件不存在,创建新文件。
      • a:打开一个文件用于追加。
        • 如果该文件已存在,文件指针将会放在文件的结尾,也就是说新的内容将会被写入到已有内容之后。
        • 如果该文件不存在,创建新文件进行写入。
      • a+:打开一个文件用于读写。
        • 如果该文件已存在,文件指针将会放在文件的结尾,也就是说新的内容将会被写入到已有内容之后。
        • 如果该文件不存在,创建新文件用于读写。
    • read函数,file对象方法,从一个打开的文件中读取一个字符串。
    • write函数,file对象方法,将任何字符串写入一个打开的文件。
    • close函数,file对象方法,刷新缓冲区里任何还没写入的信息,并关闭该文件
  3. file对象

    • file属性
      • file.closed:返回true如果文件已被关闭,否则返回false。
      • file.mode:返回被打开文件的访问模式。
      • file.name:返回文件的名称。
      • file.softspace:如果用print输出后必须跟一个空格符,则返回false。
    • file方法
      • file.close():关闭文件,关闭后文件不能再进行读写操作。
      • file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓冲区写入。
      • file.fileno():返回一个整型的文件描述符(file descriptor FD整型),可以用在如os模块的read方法等一些底层操作上。
      • file.isatty():如果文件连接到一个终端设备返回True,否则返回False。
      • file.next():返回文件下一行。
      • file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。
      • file.readline([size]):读取整行,包括\n字符。
      • file.readlines([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
      • file.seek(offset[, whence]):设置文件当前位置
      • file.tell():返回文件当前位置。
      • file.truncate([size]):截取文件,截取的字节通过size指定,默认为当前文件位置。
      • file.write(str):将字符串写入文件,返回的是写入的字符长度。
      • file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
  4. os模块

二、使用

  1. 标准输入输出,demo1.py
    • 代码
1
2
3
# coding=utf-8
str = input("请输入:")
print("你输入的内容是:",str)
  • 运行python3.8 demo1.py
  1. 文件I/O,demo2.py
    • 代码
1
2
3
4
5
6
7
8
9
10
11
# -*- coding: UTF-8 -*-
fo = open("test.txt")
print("文件名: ", fo.name)

w = fo.write("1234567890")
print("写入文件:",w)

r = fo.read(10)
print("读取文件:",r)

fo.close()
  • 运行python3.8 demo2.py

三、参考