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

本文介绍了Python编程中处理输入输出的基础知识,包括标准输入输出、文件I/O(如读写文件、使用with语句和异常处理)以及网络I/O(如socket模块的使用)。通过实例演示了如何利用各种函数实现数据交换和文件操作。
摘要由CSDN通过智能技术生成

初学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模块和包全解析,一篇文章就够!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TiYong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值