Python新手必学:输入输出全攻略

news2025/3/14 0:45:41

初学Python编程时,其中一个最基础、也是最重要的部分就是如何处理输入和输出。无论是简单的用户输入,还是程序输出结果,都很重要。现在,我们将一起学习Python输入输出的各种技巧和方法,让你在编写代码时得心应手。

目录

1. Python 中的 I/O 类型

2. 标准输入输出

2.1 标准输入

2.2 标准输出

3. 文件 I/O

3.1 文件读取

3.2 文件写入

3.3 使用 with 语句

3.4 异常处理

4. 网络 I/O

总结


在Python中,输入Input/输出Output(简称:I/O )是指程序与外部世界之间的数据交换。掌握输入输出 (I/O) 是必不可少的。

1. Python 中的 I/O 类型

类型描述
标准输入输出程序与键盘、显示器等标准设备之间的数据交换
文件 I/O程序与文件之间的数据交换
网络 I/O程序与网络之间的数据交换


2. 标准输入输出

标准输入输出是指程序与键盘、显示器等标准设备之间的数据交换。在 Python 中,可以使用 input() 函数获取用户输入,可以使用 print() 函数输出数据。标准输入输出通常使用以下三个文件对象:

类型对象描述默认指向
标准输入sys.stdin从键盘输入的数据键盘
标准输出sys.stdout输出到显示器显示器
标准错误输出sys.stderr输出到显示器显示器

示例代码:获取用户输入并输出到显示器。

# 获取用户输入
name = input("请输入您的姓名:")

# 输出数据
print("欢迎使用,", name)

有上面的代码铺垫,下面我们开始逐个讲解:

2.1 标准输入

标准输入有input函数、sys.stdin模块两部分。

  • input函数

input(prompt) 函数允许你从键盘读取用户的输入。它会显示一个提示,然后等待用户输入,并返回用户输入的字符串。比如:

# 获取用户输入
name = input("请输入您的姓名:")

# 输出数据
print("欢迎使用,", name)  
  • sys.stdin

sys 模块中的 stdin 对象允许你从标准输入中读取数据。你可以使用 sys.stdin.readline() 方法来读取一行输入。要使用这种方式,前提,你需要导入 sys 模块:

import sys

line = sys.stdin.readline()
print("你输入的是:", line)

2.2 标准输出

  • print函数

print() 函数是最常见的输出方式。它将字符串表示的值打印到标准输出(通常是屏幕)。你可以传递多个参数给 print(),它们会以空格分隔,并在末尾默认添加换行符。比如,我们最初的代码“Hello, world!”:

print("Hello, world!")


#  end 参数来更改末尾的字符
print("Hello", end="")
print(", world!")

  • sys.stdout

你可以直接通过 sys.stdout.write() 方法写入标准输出。这对于需要更多控制输出格式的情况很有用:

import sys
sys.stdout.write("Hello, world!\n")

3. 文件 I/O

文件 I/O 使用 open() 函数打开文件,并使用 read()write() 等方法进行读写操作。

操作函数描述
打开文件open()打开文件
读文件read()读取文件内容
写文件write()写入文件内容

示例代码:将文本写入到文件。

# 打开文件
with open("my_file.txt", "w") as f:

    # 写入文本
    f.write("This is a test.")

上面示例代码,你可能看到了w,会有所疑惑,下面来看看这张表格,它解释了w是什么。下面的这些模式允许你以不同的方式打开文件,进行读取、写入或追加操作。

模式解释描述
'r'读取模式(Read)打开文件用于读取。文件的指针将会放在文件的开头。这是默认模式。
'w'写入模式(Write)打开文件用于写入。如果文件存在,则覆盖文件。如果文件不存在,则创建新文件。
'a'追加模式(Append)打开文件用于追加内容。文件的指针将会放在文件的末尾。如果文件不存在,则创建新文件。
'rb'二进制读取模式(Read Binary)以二进制格式打开一个文件用于只读。文件的指针将会放在文件的开头。这个模式通常用于非文本文件,比如图像、音频等。
'wb'二进制写入模式(Write Binary)以二进制格式打开一个文件用于写入。如果文件存在,则覆盖文件。如果文件不存在,则创建新文件。这个模式也通常用于非文本文件的写入,比如图像、音频等。
'ab'二进制追加模式(Append Binary)以二进制格式打开一个文件用于追加内容。文件的指针将会放在文件的末尾。如果文件不存在,则创建新文件。这个模式也通常用于非文本文件的追加,比如图像、音频等。
'r+'读写模式(Read/Write)打开一个文件用于读写操作。文件的指针将会放在文件的开头。
'w+'写读模式(Write/Read)打开一个文件用于读写操作。如果文件存在,则覆盖文件。如果文件不存在,则创建新文件。文件的指针将会放在文件的开头。
'a+'追加读模式(Append/Read)打开一个文件用于读写操作。文件的指针将会放在文件的末尾。如果文件不存在,则创建新文件。
'rb+'二进制读写模式(Read/Write Binary)以二进制格式打开一个文件用于读写操作。文件的指针将会放在文件的开头。这个模式通常用于非文本文件的读写,比如图像、音频等。
'wb+'二进制写读模式(Write/Read Binary)以二进制格式打开一个文件用于读写操作。如果文件存在,则覆盖文件。如果文件不存在,则创建新文件。这个模式也通常用于非文本文件的读写,比如图像、音频等。
'ab+'二进制追加读模式(Append/Read Binary)以二进制格式打开一个文件用于读写操作。文件的指针将会放在文件的末尾。如果文件不存在,则创建新文件。这个模式也通常用于非文本文件的读写,比如图像、音频等。

根据你的需求和文件的类型,选择合适的模式非常重要,以确保文件被正确地读取或写入。

下面这张图是清晰的展示了文件的读写模式:

那么,我们通过下面的代码具体来学习一下:

 

3.1 文件读取

  • 使用 open() 函数

使用 open() 函数可以打开一个文件,并返回一个文件对象,你可以对这个对象进行读取操作。基本的语法如下:

# 打开文件并读取内容
with open('filename.txt', 'r') as f:
    content = f.read()
    print(content)
  • open() 函数的第一个参数是文件名,第二个参数是模式。常见的模式就是上面的表格介绍的,这里简单写几个:
  • 'r':只读模式
  • 'w':写入模式,会覆盖文件中已有的内容
  • 'a':追加模式,会在文件末尾添加内容
  • 'b':二进制模式,用于处理非文本文件

  • 逐行读取

使用 readline() 方法可以逐行读取文件内容,假设我们有一个文件名为filename.txt:

with open('filename.txt', 'r') as f:
    for line in f:
        print(line.strip())  # strip() 用于移除行尾的换行符

 

3.2 文件写入

  • 使用 open() 函数

使用 open() 函数以写入模式 'w' 打开文件,可以写入内容到文件中:

# 写入内容到文件
with open('output.txt', 'w') as f:
    f.write("Hello, world!\n")
    f.write("This is a new line.\n")
  • 使用 print() 函数

你也可以使用 print() 函数将内容写入文件,通过指定 file 参数为打开的文件对象:

with open('output.txt', 'w') as f:
    print("Hello, world!", file=f)
    print("This is a new line.", file=f)

3.3 使用 with 语句

你可能也发现了,在上面的例子中,使用with 语句来打开文件。with 语句会在代码块执行完毕后自动关闭文件,这样可以确保在操作完成后正确地关闭文件并释放资源。

with open('filename.txt', 'r') as f:
    content = f.read()
    print(content)
# 在这里,文件已经自动关闭 

 

3.4 异常处理

其实,很多时候,打开文件并不是那么顺利的,最好在处理文件时加上适当的异常处理(关于异常处理,后续我们会详细讲,这里只是展示给大家看,可以跳过),以应对文件不存在或无法读写等情况:

try:
    with open('filename.txt', 'r') as f:
        content = f.read()
        print(content)
except FileNotFoundError:
    print("文件不存在!")
except IOError:
    print("无法读取文件!") 

那么,以上是一些常用的文件输入输出的方法,具体的选择取决于你的需求。

4. 网络 I/O

网络 I/O 使用 socket 模块进行网络连接,并使用 send()recv() 等方法进行数据发送和接收。

操作模块函数描述
网络连接socketsocket()建立网络连接
数据发送send()发送数据
数据接收recv()接收数据

 

示例代码:创建一个简单的 HTTP 服务器 server.py,一般本机的地址都是127.0.0.1。

import socket

# 创建一个 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定到本地地址和端口
s.bind(("127.0.0.1", 8310))

# 监听连接
s.listen(5)

# 接受连接
conn, addr = s.accept()

# b开头,发送数据
conn.send(b"This is Server: Hello, world!")

# 接收数据
data = conn.recv(1024)

# 在屏幕上输出收到的数据
print(data)

# 关闭连接
conn.close()
s.close()

客户端代码client.py:

import socket

# 创建一个 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器端
s.connect(("127.0.0.1", 8310))

# b开头,发送数据
s.send(b"This is Client: Hello, world!")

# 接收数据
data = s.recv(1024)

# 在屏幕上输出收到的数据
print(data)

# 关闭连接
s.close()
 

这时,我们将两个代码,分别保存。

然后,我们打开两个终端,第一个终端执行 server.py 文件:

$python server.py 

第二个终端执行 server.py 文件:

$python client.py 

# 会输出如下:
b'This is Server: Hello, world!'

回到服务器,会输出:

b‘This is Client: Hello, world!’

网络的内容还有很多,包括后期会讲的Requests库、urllib库、Asyncio库等等,这里关于网络的输入输出就简单讲这么多,后续我还会给大家详细讲讲Python的网络编程。

总结

如果大家跟着我的代码一起学习,相信你一定会有所收获。我们下一篇文章仍然会继续Python高阶特性的讲解,欢迎大家和我一起继续学习、记录python的下一个知识点。

如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!

往期学习:

Python安装教程(版本3.8.10)windows10

Linux系统:安装Conda(miniconda)

Conda快速安装的解决方法(Mamba安装)

VSCode安装教程(版本:1.87.0)Windows10

Python基础语法:从入门到精通的必备指南

Python的基本数据类型

Python数据类型间的转换(隐式、显式)-CSDN博客

Python基础知识:运算符详解-CSDN博客

Python基础知识:数字类型及数学函数详解-CSDN博客

Python字符串操作及方法详解!一篇就搞定!-CSDN博客

Python列表及其操作详解,从此不再迷茫!-CSDN博客

Python元组(Tuple)深度解析!

Python字典的使用技巧(一篇详解)

Python条件控制深度解析,成为编程必备

Python循环语句全解析(附实战演练)

Python函数高效编程技巧,提升你的代码效率!

Python模块和包全解析,一篇文章就够!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5:七天学会基础动画网页11

CSS3动画 CSS3过渡的基本用法: CSS3过渡是元素从一种样式逐渐改变为另一种样式的效果。 过渡属性-transition 值与说明 transition-property 必需,指定CSS属性的name,transition效果即哪个属性发生过渡。 transition-duration 必需,t…

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

💡💡💡本文改进内容:通道注意力和空间注意力CBAM,全新注意力GAM:超越CBAM,不计成本提高精度 改进结构图如下: YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

LeetCode2115. 从给定原材料中找到所有可以做出的菜

拓扑排序 题面 题目链接:2115. 从给定原材料中找到所有可以做出的菜 - 力扣(LeetCode) 你有 n 道不同菜的信息。给你一个字符串数组 recipes 和一个二维字符串数组 ingredients 。第 i 道菜的名字为 recipes[i] ,如果你有它 所有…

openstack(T)启动实例状态为错误,如何解决

---基本服务得是正常的 ---1.在web界面看是什么错误 点击你的实例名称,在概况里面去查看 当时我的error :编码500 消息 No valid host was found. 错误原因 1:资源不足 2:未开启虚拟机cpu虚拟化 解决: 1.资源不…

Element-Plus: Select组件实现滚动分页加载

Element-Plus的select组件并没有自带滚动分页加载的功能,其虽然提供了自定义下拉菜单的底部的方式可以自定义上一页及下一页操作按钮的方式进行分页加载切换: 但如果不想通过点击分页按钮的方式,利用滚动触底进行下一页加载的话,…

Arrays对象数组排序 --java学习笔记

假设有四个学生对象: name:"小明",height:168.8,age:22 name:"小红",height:178.5,age:20 name:"小智",height:160.1,age:21 name:"小白",height:230.6,age:22 现在需要按身高对他们进行排序 对象进行排序,默…

19.ADC模数转换器知识点+AD单通道AD多通道应用程序示例

0. 江协科技/江科大-STM32标准库开发-各章节详细笔记-查阅传送门_江协科技stm32笔记-CSDN博客文章浏览阅读2.9k次,点赞44次,收藏128次。江协科技/江科大-STM32标准库开发-各章节详细笔记-传送门至各个章节笔记。基本上课程讲的每句都详细记录&#xff0c…

修改 MySQL update_time 默认值的坑

由于按规范需要对 update_time 字段需要对它做默认值的设置 现在有一个原始的表是这样的 CREATE TABLE test_up (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,update_time datetime default null COMMENT 操作时间,PRIMARY KEY (id) ) ENGINEInnoDB DEF…

xss——pdfxss,mxss,uxss,flashxss

uxss(但是需要很低的版本才可以使用)(但是csdn也会有过滤) 浏览器插件漏洞 搜索这个跨站语句,然后用翻译功能,它会触发跨站、 测试的时候可以去不断的测试它的所有功能,看也没有触发跨站 flas…

C语言笔记:控制流

ACM金牌带你零基础直达C语言精通-课程资料 本笔记属于船说系列课程之一,课程链接:ACM金牌带你零基础直达C语言精通 你也可以选择购买『船说系列课程-年度会员』产品『船票』,畅享一年内无限制学习已上线的所有船说系列课程:船票购…

1335:【例2-4】连通块

【算法分析】 设数组vis,vis[i][j]表示(i,j)位置已经访问过。遍历地图中的每个位置,尝试从每个位置开始进行搜索。如果该位置不是0且没有访问过,那么访问该位置,并尝试从其上下左右四个位置开始搜索。在看一个新的位置时&#xff…

网络机顶盒什么牌子好?小编盘点零差评网络机顶盒排行榜

在挑选网络机顶盒的时候我们往往会参考销量和口碑,小编花费一个月时间整理了热门网络机顶盒的用户评价情况,整理了这份口碑最好的网络机顶盒排行榜,跟着我一起看看网络机顶盒什么牌子好吧。 NO.1、泰捷WEBOX WE40S网络机顶盒 在混迹网络机顶…

Linux下的多线程编程:原理、工具及应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

浅谈估值模型:从估值-收益分布看待市场投资价值

摘要及声明 1:本文从估值的角度,通过深入研究指数估值变化的特征,总结出市场几轮牛熊背后的规律,从而客观理性地判断目前市场的投资价值。技术方面,本文通过ipywidgets交互式控件实现数据的可视化和交互式展示。 2&a…

Git 学习笔记 三个区域、文件状态、分支、常用命令

Git 学习 GitGit概念VS Code中使用仓库(repository)示例 Git 使用时的三个区域示例 Git 文件状态示例 Git 暂存区示例 Git 回退版本删除文件忽略文件示例 分支分支的使用分支的合并与删除分支的合并冲突 Git常用命令Git远程仓库 (HTTP)步骤远程仓库 克隆…

游戏开发需不需要考研?

近年来,中国游戏行业增速放缓,用户基数趋于饱和,行业监管日趋严格,国外竞争激烈,使游戏公司面临挑战。为适应形势,游戏企业正在调整策略,采取主动学习和实战练习的方式,提升游戏质量…

虚拟环境的激活

(此博客仅用于我记录虚拟环境的激活方法) 虚拟环境的激活命令: venv/Scripts/activate 在F:\git repo\Database-Course-Design 这个文件夹中启动命令行 这个文件夹中含有虚拟环境venv 输入命令venv/Scripts/activate,就得到下面的结果: 此时就激活了虚拟环境&…

AVCE - AV Evasion Craft Online 更新 8 种加载方式 - 过 WD 等

免责声明:本工具仅供安全研究和教学目的使用,用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任,且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规,并理解并同意本声明…

3. ElasticSearch搜索技术深入与聚合查询实战

1. ES分词器详解 1.1 基本概念 分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 1.2 …

[SWPUCTF 2021 新生赛]crypto6

题目: 从代码可以看出​​​​​​该题目对flag依次进行了base64,base32,base16加密。要得到正确的flag即进行相反的操作,即依次进行base16,32,64的解码即可