七、Python输入与输出

字面量

  • 字面量(literal)是以变量或常量给出的原始数据。在程序中可以直接使用字面量。
  • 字面量的类型:
    • 数值型
    • 字符型
    • 布尔型
    • 字面量集合:列表(List)、元组(Tuple)、字典(Dict)和集合(Set)
    • 特殊字面量:None

字面量插值

  • 字面量插值,就是将变量、常量以及表达式插入的一种技术,它可以避免字符串拼接的问题,很多语言都支持了此功能。
  • 字面量插值方法:
    • 格式化输出
    • 通过string.format()方法拼接
    • Formatted string literals,字符串格式化机制(>=Python3.6)
  • https://docs.python.org/3/reference/lexical_analysis.html#f-strings

格式化输出—%的用法

转换说明符 解释
%d、%i 转换为带符号的十进制整数
%o 转换为带符号的八进制整数
%x、%X 转换为带符号的十六进制整数
%e 转换为科学计数法表示的浮点数(e小写)
%E 转换为科学计数法表示的浮点数()E大写
%f、%F 转换为十进制浮点数
%g 只能选择使用%f或%e格式
%G 只能选择使用%F或%E格式
%c 格式化字符及其ASCII码
%r 使用repr() 函数将表达式转换为字符串
%s 使用str() 函数将表达式转换为字符串
  • 要指定位数,可以加上.位数,如%.2f即代表两位小数
  • 例子
>>> print("my name is michael")
my name is michael
>>> name = 'michael'
>>> print('my name is %s'%name)
my name is michael
>>>
>>> age = 18
>>> print('my name is %s, my age is %d'%(name,age))
my name is michael, my age is 18
>>> print('my name is %s, my age is %d, number is %f'%(name,age,3.1415))
my name is michael, my age is 18, number is 3.141500
>>> print('my name is %s, my age is %d, number is %.3f'%(name,age,3.1415))
my name is michael, my age is 18, number is 3.142

缺点为必须指定字面量的类型

format()方法

  • 用法:str.format() 可以将
    • 字符串 举例:print("we are the {} and {}".format('Tom','Jerry'))
    • 列表 举例:print("we are the {0} and {1}".format(*listdata))
    • 字典 举例:print("my name is {name},age is {age}".format(**dictdata))
>>> name = 'Jerry'
>>> print('my name is {}'.format(name))
my name is Jerry
>>> age = 20
>>> print('my name is {1}, age is {0},{1}{0}{0}'.format(name,age))
my name is 20, age is Jerry,20JerryJerry
>>>
>>> list1 = [1,2,3]
>>> dict1 = {'name':'Tom','gender':'male'}
>>> print('my list is {},dict is {}'.format(list1,dict1))
my list is [1, 2, 3],dict is {'name': 'Tom', 'gender': 'male'}

>>> print('my number is {0}{1}{2}'.format(*list1))
my number is 123
>>> print('my name is {name}, gender is {gender}'.format(**dict1))
my name is Tom, gender is male

Tips:列表解包加一个星号,字典解包加两个星号。如:*list1**dict1

F-strings:字符串格式化机制,支持Python3.6以上版本

  • 使用方法:f'变量名'
  • 注意:
    • 大括号里面可以是表达式或函数
    • 大括号内不能转义,不能使用''
>>> print(f'my name is {name}')
my name is Jerry
>>> print(f'my first number in my list is {list1[0]}')
my first number in my list is 1
>>> print(f'my name in my dict is dict1["name"]')
my name in my dict is dict1["name"]

# 可以插入表达式或函数
>>> print(f'my name is {name.upper()}')
my name is JERRY
>>> print(f'result is {(lambda x:x+1)(2)}')
result is 3

Tips:在F-strings中大括号内不能使用':',所以使用lambda表达式的时候需要将其括起来,然后再用一个括号传入变量的值,如f'result is {(lambda x:x+1)(2)}'

文件读取

  • 读取文件的操作步骤:
    • 第一步:打开文件,获取文件描述符
    • 第二步:操作文件描述符(读|写)
    • 第三部:关闭文件
  • 注意:
    • 文件读写操作完成后,应该及时关闭

文件读取方法

  • open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    • 参数说明:
      • name:文件名称的字符串值
      • mode:只读r,写入w,追加a,默认文件访问模式为只读(r)
      • buffering:寄存区缓存
        • 0:不寄存
        • 1:访问文件时会寄存行
        • 大于1:寄存区的缓存大小
        • 负值:寄存区的缓存大小,即为系统默认
  • 文件读取方法:
    • f = open('test.txt', 'r')
    • f.read()
    • f.close()
  • 最优写法:
    • with open('file名称', 'r') as f:
  • 读取文件常用的方法:
    • read():读取文件中所有内容(缺点:当文件内容非常大,大于内存时,无法使用这个方法)
    • readable():判断文件是否可读
    • readline():每次读取一行(包括行结束符),返回的是一个字符串对象,保持当前行的内存
    • readlines():读取所有行的内容,放到列表中
f = open('data.txt')
print(f.readable())
# print(f.readlines()) #以列表形式读
print(f.readline()) #逐行读
print(f.readline())
print(f.readline())
f.close()

# 不用再单独关闭文件,可以将文件打开后操作完毕后自动关闭
with open('data.txt') as f: 
    print(f.readlines())
  • 结果为:


    image.png

Tips:readlines是将文件的所有内容以列表形式读出,以换行符为分隔符;readline是逐行读出;with open()可以将文件自动关闭。读取图片文件,需要将mode改为rb即二进制模式。正常的文本,可以使用rt,也就是默认格式。

  • 常用的读文件方法
# 标准的读数据方法
with open('data.txt') as f:
    while True:
        line = f.readline()
        if line:
            print(line)
        else:
            break

Json格式转化

  • Json是什么?
    • 轻量级的数据交换格式
    • 友好,易于读写(比xml,protobuf要好)
    • 对机器友好,易于解析和生成
    • 由列表和字典组成
  • 使用场景
    • 生成:将对象生成为字符串,存入文件、数据库、网络传输等
    • 解析:解析来自文件、数据库、网络传输的字符串为Python对象
    • 跨语言的数据交换:比如Python和c / c++ / java /javascripts 的数据交换

Json使用方式

  • 如何使用Json(json是标准库)
    • import json
  • 常用的几种方法
    • json.dumps(python_obj):把数据类型转换为字符串
    • json.loads(json_string):把字符串转换为json
    • json.dump():把数据类型转换为字符串并存储到文件中
    • json.load(file_stream):把文件打开,把里面的字符转换为数据类型
import json
data = {
    'name':['jerry','nickname'],
    'age':18,
    'gender':'male'
}
# 转化为string类型
data1 = json.dumps((data))
print(type(data))
print(data1,type(data1))

# 转换为dict类型
data2 = json.loads(data1)
print(type(data2))

Json的其他用法后面章节详细讲解

下一节:Python错误与异常,包括语法错误与定位、异常捕获、异常处理、自定义异常。

你可能感兴趣的:(七、Python输入与输出)