Python学习【17】:Python 输入和输出

  • 时间:2025-11-11 19:11 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:一、学前花絮我们上一章学习了python的推导式,这个内容是python独具特色的,列如列表推导式和生成器。对于初学者来说,可以忽略这章内容,在熟练掌握列表、字典的常规操作之后,可以尝试去练习。要说它有什么用?就列如我们住进一所房子,同样是卧室、厕所、厨房具备,但另一所房子装修得更精美和舒服。我的感觉就是如此。对于编写程序的第一要务是完成功能目标,美化是其次。而对于专业的程序员来说,就要追求代码的

一、学前花絮

我们上一章学习了python的推导式,这个内容是python独具特色的,列如列表推导式和生成器。对于初学者来说,可以忽略这章内容,在熟练掌握列表、字典的常规操作之后,可以尝试去练习。要说它有什么用?就列如我们住进一所房子,同样是卧室、厕所、厨房具备,但另一所房子装修得更精美和舒服。

我的感觉就是如此。对于编写程序的第一要务是完成功能目标,美化是其次。而对于专业的程序员来说,就要追求代码的美观和效率。推导式、生成器就是让你编写的程序看起来更加高大上,更加节省空间和提升效率。

这一章我们学习python的输入和输出,之前的章节我们也学过一些简单的输入输出,列如print函数就是常见的输出函数,input函数是常见的输入函数。这一章在此基础上进行细化,并增加读写文件的功能。

二、Python3 输入和输出

2.1 输出格式美化

Python两种输出值的方式: 表达式语句和 print() 函数。

第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。

如果你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。

如果你希望将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。

  • str(): 函数返回一个用户易读的表达形式。
  • repr(): 产生一个解释器易读的表达形式。

Python学习【17】:Python 输入和输出

格式化输出

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

Python学习【17】:Python 输入和输出

数字的格式化

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

这里有两种方式输出一个平方与立方的表:

Python学习【17】:Python 输入和输出

格式对齐

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

注意:在第一个例子中, 每列间的空格由 print() 添加。

这个例子展示了字符串对象的 rjust() 方法, 它可以将字符串靠右, 并在左边填充空格。

还有类似的方法, 如 ljust() 和 center()。 这些方法并不会写任何东西, 它们仅仅返回新的字符串。

另一个方法 zfill(), 它会在数字的左边填充 0,如下所示:

Python学习【17】:Python 输入和输出

浮点数的补零

输出结果如下:

Python学习【17】:Python 输入和输出

从上面看出,如果浮点数本身的长度超过zfill的数字就无效了

str.format() 的基本使用如下:

Python学习【17】:Python 输入和输出

format的使用

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。

在括号中的数字用于指向传入对象在 format() 中的位置,如下所示:

Python学习【17】:Python 输入和输出

format的参数替换

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数。

Python学习【17】:Python 输入和输出

format的关键字参数

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

位置及关键字参数可以任意的结合:

Python学习【17】:Python 输入和输出

format的参数灵活使用

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

可选项 : 和格式标识符可以跟着字段名。 这就允许对值进行更好的格式化。 下面的例子将 Pi 保留到小数点后三位:

Python学习【17】:Python 输入和输出

浮点数的格式化

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

读取键盘输入

Python 提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。

Python学习【17】:Python 输入和输出

读取键盘的输入

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

2.2 读和写文件

open() 将会返回一个 file 对象,基本语法格式如下:

open(filename, mode)

  • filename:包含了你要访问的文件名称的字符串值。
  • mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

以下实例将字符串写入到文件 foo.txt 中:

Python学习【17】:Python 输入和输出

打开文件写字符串

输出结果写入文件foo.txt,在windows的cmd下可以查看:

Python学习【17】:Python 输入和输出

查看写入的文件内容

2.3 文件对象的方法

本节中的例子假设已经创建了一个称为 f 的文件对象。

f.read()

为了读取一个文件的内容,调用 f.read(size), 这将读取必定数目的数据, 然后作为字符串或字节对象返回。

size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

以下实例假定文件 foo.txt 已存在(上面实例中已创建):

Python学习【17】:Python 输入和输出

打开文件读取内容

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

f.readline()

f.readline() 会从文件中读取单独的一行。换行符为 ' '。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

Python学习【17】:Python 输入和输出

按行读取文件

输出结果如下:

Python学习【17】:Python 输入和输出

输出内容

f.readlines()

f.readlines() 将返回该文件中包含的所有行。

如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

Python学习【17】:Python 输入和输出

读取多行内容

输出结果如下:

Python学习【17】:Python 输入和输出

输出内容

另一种方式是迭代一个文件对象然后读取每行:

Python学习【17】:Python 输入和输出

遍历文件内容

输出结果如下:

Python学习【17】:Python 输入和输出

输出内容

f.write()

f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

Python学习【17】:Python 输入和输出

计算写入文件的字符数

输出结果如下:

Python学习【17】:Python 输入和输出

输出内容

如果要写入一些不是字符串的东西, 那么将需要先进行转换:

Python学习【17】:Python 输入和输出

写入文件的内容必须是字符串

在pycharm的终端界面,可以用type命令查看foo1.txt内容:

Python学习【17】:Python 输入和输出

查看文件内容

f.tell()

f.tell() 用于返回文件当前的读/写位置(即文件指针的位置)。文件指针表明从文件开头开始的字节数偏移量。f.tell() 返回一个整数,表明文件指针的当前位置。

f.seek()

如果要改变文件指针当前的位置, 可以使用 f.seek(offset, from_what) 函数。

f.seek(offset, whence) 用于移动文件指针到指定位置。

offset 表明相对于 whence 参数的偏移量,from_what 的值, 如果是 0 表明开头, 如果是 1 表明当前位置, 2 表明文件的结尾,例如:

  • seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
  • seek(x,1) : 表明从当前位置往后移动x个字符
  • seek(-x,2):表明从文件的结尾往前移动x个字符

from_what 值为默认为0,即文件开头。下面给出一个完整的例子:

Python学习【17】:Python 输入和输出

文件的指针和偏移量

输出结果如下:

Python学习【17】:Python 输入和输出

输出结果

f.close()

在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。

当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

当处理一个文件对象时, 使用 with 关键字是超级好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:

with open('foo.txt', 'r') as f:

... read_data = f.read()

2.4 pickle 模块

python的pickle模块实现了基本的数据序列和反序列化。

通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。

通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

基本接口:

pickle.dump(obj, file, [,protocol])

有了 pickle 这个对象, 就能对 file 以读取的形式打开:

x = pickle.load(file)

注解:从 file 中读取一个字符串,并将它重构为原来的python对象。

file: 类文件对象,有read()和readline()接口。

Python学习【17】:Python 输入和输出

pickle的使用

输出如下:

Python学习【17】:Python 输入和输出

输出结果

三、小结

今天我们学习了python语言的输入输出,包括格式化字符串、数字的输出及文件的读写。这部分内容超级重大,由于计算机语言本质上就是完成输入、输出的过程。对于pickle模块,是比较特殊的功能。对于初学者可以忽略,但这个功能在一些特定场景需要持久化存储数据对象方面有价值。

让我们保持学习热烈,多做练习,我们下期再见!

Python学习【17】:Python 输入和输出

python与人工智能

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】最低 2 美元,这 55 款 macOS & Windows 应用一次全都入手(2025-11-11 22:01)
【系统环境|】SCI期刊对论文图片有哪些要求?(2025-11-11 22:00)
【系统环境|】论文缩写大全,拿走不谢(2025-11-11 22:00)
【系统环境|】阿甘正传高频词整理 GRE托福四六级词汇整理(2025-11-11 21:59)
【系统环境|】矢量图形编辑应用程序-WinFIG(2025-11-11 21:59)
【系统环境|】Figma上市首日暴涨250%的深层逻辑:为什么AI时代协作平台更加不可替代?(2025-11-11 21:58)
【系统环境|】FigJam是什么?一文读懂在线白板软件的方方面面!(2025-11-11 21:58)
【系统环境|】在windows上有什么好用的书写白板软件?(2025-11-11 21:57)
【系统环境|】Docker基础应用之nginx(2025-11-11 21:57)
【系统环境|】VS Code 新手必装插件清单(2025-11-11 21:56)
手机二维码手机访问领取大礼包
返回顶部