文章目录

  • 一、输入
  • 1、标准输入
  • 单行输入多数字,以空格分隔
  • 2、文件
  • Ⅰ、打开文件
  • r+、w+、a+的区别
  • Ⅱ、从文件读取
  • Ⅲ、写入文件
  • Ⅳ、移动文件指针
  • Ⅴ、当前指针位置
  • Ⅵ、关闭文件
  • 良好的处理文件习惯
  • 二、输出
  • 1、标准输出
  • 小试pprint
  • 省略方括号单行输出列表
  • 以文本输出转义字符
  • 2、str.format(string)美化输出
  • 数字的常用格式化输出
  • 替代str.format——Python3.6+的f-sting
  • 三、小试数据的序列化和反序列化——pickle
  • 1、序列化操作
  • 2、反序列化操作


一、输入

1、标准输入

内置函数input(string)提供从默认标准输入——从键盘读取一行文本

函数返回值是输入的文本,str对象

参数string为提示文本,str对象,可选

str = input("Please input:")

回车结束输入

单行输入多数字,以空格分隔
numbers = list(map(int,input().split(" ")))
print(numbers)

2、文件

Ⅰ、打开文件

内置函数open(filename,mode,encoding=)提供打开文件功能

函数返回值是打开的文件,file对象

参数filename为文件名称,str对象,包括文件名+后缀,默认路径同当前.py文件
参数mode为操作模式,str对象,可选
参数encoding为编码类型,str对项,可选

file = open("text.txt","r+",encoding="gbk")

只有选对了mode才能进行有关读写操作

主要mode参数

模式描述

r

只读 (默认)

读取存在的文件

w

覆盖写入

文件存在则覆盖原有内容,文件不存在则新建

a

接续写入

文件存在则续写原有内容,文件不存在则新建

可选mode参数

模式描述

b

指定为二进制格式操作

+

读写模式*

r+、w+、a+的区别

mode

文件存在性

文件指针位置



r+

必须存在

开头

从头读取

从头覆盖写入

w+

不受限

开头

从头读取

从头覆盖写入

a+

不受限

末尾

末尾读取

末尾接续写入

Ⅱ、从文件读取

内置函数file.read(size)、file.readline()、file.readlines(sizehint)提供读取功能

  • file.read(size):

函数返回值是读取文本,str对象

参数size为读取字符数,int对象,可选,若省略或为负则为读取全部

  • file.readline():

函数返回值是读取至换行符“\n”之前的单行文本,str对象

  • file.readlines(sizehint):

函数返回值是读取所有行,str对象

参数sizehint为指定字节长度,int对象

若返回值为None则表示读取完毕

Ⅲ、写入文件

内置函数file.write(string)提供写入文件功能

函数返回值是写入字符数,int对象

参数string为待写入文本,str对象

Ⅳ、移动文件指针

内置函数file.seek(offset,from)提供移动文件指针功能

函数返回值是当前指针位置,表示从头开始的字节数,int对象

参数offset为移动字符数,int对象,正值表示向后移动,负值表示向前移动
参数from为移动的基准点,int对象,可选

参数from

描述

0

文件开头 (默认)

1

当前位置

2

文件末尾

Ⅴ、当前指针位置

内置函数file.tell()提供查询当前指针位置功能

函数返回值是当前指针位置,表示从头开始的字节数,int对象

Ⅵ、关闭文件

内置函数file.close()提供关闭文件功能

函数返回值是None

处理文件有始有终,切记关闭文件

良好的处理文件习惯

为了避免未及时关闭文件,造成未知错误,请使用with关键字,它将自动关闭文件

with open("text.txt" , "w+") as f:
	f.write("123")
	str = f.read()

二、输出

1、标准输出

内置函数print(string1,string2,end=,sep=,)提供对象输出

参数string为输出对象,可选
常用参数end为结尾输出符,可选,默认为换行符
常用参数sep为多个输出对象的分隔符,可选,默认为空格

a = 5
b = "a"
print(a,b,end="",sep="\t")

结尾不换行令end=""
要输出换行符可以不提供参数,即print()

小试pprint

pprint.pprint()能够规范输出的格式

from pprint import pprint
a = {
    "nihao":"hello",
    "xiexie":"thanks",
    "shuben":"books",
    "diannao":"computers"
}
b = (2,4,6)
c = "hello"
d = [a,b,c]

pprint(d)

观察输出,相较于print(),格式更整齐

省略方括号单行输出列表

某些情况需要输出列表,通常有两种思路:

a = [1,2,3]
for i in a:
    print(i,end=" ")

a = [1,2,3]
print(*a,end="")
以文本输出转义字符

若字符串有转义字符,我们想以文本的形式输出,只用print(string)会将转义字符表达

a = "qwe\n"
print(a)

使用repr(string)可以不表达转义字符而以文本形式输出

a = "qwe\n"
print(repr(a))

2、str.format(string)美化输出

内置函数str.format(string)提供美化输出功能

函数返回值是美化后的字符串,str对象

参数string是待美化的字符串,str对象

age = 15
grade = 9

print('My age is {} and grade is {}'.format(age,grade))

类比C语言的%d、%c,前面的花括号会被后面的变量所替换

默认顺序同参数传入顺序
改变顺序可以在花括号内添加序号,默认第一个参数为0号

age = 15
grade = 9

print('My age is {1} and grade is {0}'.format(grade,age))

或给变量命名

print('My age is {age} and grade is {grade}'.format(grade=9,age=15))

可以设定默认值

print('My age is {age} and grade is {}'.format(9,age=15))

以上方法可以混合使用

数字的常用格式化输出

四舍五入保留小数

print('I have {:.2f} yuan'.format(14.5))

print('PI is {:.2f}'.format(3.141))

补足空位

print('I am No.{:03d}'.format(1))

print('It is {:.02f}'.format(1))

替代str.format——Python3.6+的f-sting

age = 15
grade = 9

print(f'My age is {grade} and grade is {age}')

四舍五入保留小数

print(f'I have {14.5:.2f} yuan')

import math
print(f'PI is {math.pi:.2f}')

补足空位

print(f'I am No.{1:03d}')

print(f'It is {1:.02f}')

三、小试数据的序列化和反序列化——pickle

为什么要使用pickle?
将程序的对象信息永久存储到文件,并可以重构之前存储的对象

文件要求:
一般后缀为pkl,是类文件对象,有read()、readline()接口

1、序列化操作

import pickle
a = 5
with open("data.pkl","wb") as f:
	pickle.dump(a,f)

函数pickle.dump(obj,file,[,protocol])提供序列化功能

参数obj为变量名
参数file为存储到的pkl文件,file对象

2、反序列化操作

import pprint,pickle
with open("data.pkl","rb") as f:
	a = pickle.load(f)
	pprint.pprint(a)

函数pickle.load(file)提供反序列化功能

参数file为读取的pkl文件,file对象

pprint为规范格式输出,使得输出整齐易读

欢迎在评论区留言
感谢浏览