Python3入门指南Python语言的特点和实际应用Python3环境搭建配置VSCode进行Python开发Python基础语法Python变量与数据类型Python数据类型转换Python解释器使用Python注释使用Python运算符Python数字类型Python字符串操作Python列表操作Python元组使用Python字典使用Python集合使用Python条件控制详解Python循环语句详解Python编程入门实践Python推导式详解Python迭代器和生成器Python with语句详解Python函数详解Python lambda(匿名函数)Python装饰器Python数据结构Python模块和包使用Python中__name__和__main__的用法Python输入输出:从基础到文件操作Python文件操作Python OS模块使用Python错误和异常处理Python面向对象编程Python命名空间和作用域Python虚拟环境:venv详细教程Python类型注解Python标准库常用模块Python正则表达式Python CGI编程Python MySQL(mysql-connector驱动)Python MySQL(PyMySQL驱动)Python网络编程Python发送邮件Python多线程编程Python XML解析Python JSON解析Python日期和时间处理Python操作MongoDBPython urllib库使用Python uWSGI 安装与配置Python pip包管理工具Python operator模块Python math模块Python requests模块HTTP请求Python random模块Python OpenAI库Python AI绘画制作Python statistics模块Python hashlib模块:哈希加密Python量化交易Python pyecharts数据可视化Python Selenium网页自动化Python BeautifulSoup网页数据提取Python Scrapy爬虫框架Python Markdown转HTMLPython sys模块Python Pickle模块:数据存储Python subprocess模块Python queue队列模块Python StringIO内存文件操作Python logging日志记录Python datetime日期时间处理Python re正则表达式Python csv表格数据处理Python threading 多线程编程Python asyncio 异步编程Python PyQt 图形界面开发Python 应用方向和常用库框架

Python输入输出:从基础到文件操作

Python提供了多种方式来处理输入和输出,让我们能够与用户交互、格式化显示信息以及读写文件。掌握这些技能对日常编程工作非常重要。


基本输出方法

在Python中,最常用的输出方式是使用print()函数。这个函数可以显示文本、数字和各种数据

# 简单的输出
print("Hello, World!")

# 输出多个值,用逗号分隔
name = "小明"
age = 20
print("姓名:", name, "年龄:", age)

# 输出计算结果
print("5 + 3 =", 5 + 3)


格式化输出

为了让输出看起来更整齐,我们可以使用多种格式化方法。

使用str.format()方法

这是目前最推荐的格式化方式:

# 基本用法
print("欢迎来到{}教程".format("fly63"))

# 按位置引用
print("{0}的{1}成绩是{2}分".format("小明", "数学", 95))

# 按关键字引用
print("{name}今年{age}岁".format(name="小红", age=18))

# 数字格式化
import math
print("圆周率约等于{:.2f}".format(math.pi))  # 保留两位小数

# 对齐文本
print("{:<10} | {:^10} | {:>10}".format("左对齐", "居中", "右对齐"))
print("{:>10}".format(123))  # 右对齐,宽度10

使用f-string(推荐)

Python 3.6引入了f-string,这是最简洁的格式化方法:

name = "李华"
score = 88.5

print(f"学生{name}的考试成绩是{score}分")
print(f"平均分:{score:.1f}")  # 保留一位小数
print(f"二进制:{10:b}")     # 二进制显示

旧式%格式化

虽然不推荐新项目使用,但很多旧代码中还能看到:

name = "王刚"
age = 25
print("姓名:%s,年龄:%d" % (name, age))

import math
print("圆周率:%.3f" % math.pi)


字符串对齐方法

Python字符串提供了一些有用的对齐方法:

text = "Python"

print(text.ljust(10) + "*")  # 左对齐
print(text.center(10) + "*") # 居中对齐  
print(text.rjust(10) + "*")  # 右对齐

# 输出:
# Python    *
#   Python  *
#     Python*

# 数字补零
print("12".zfill(5))    # 00012
print("-3.14".zfill(8)) # -003.14


表格数据输出

处理表格数据时,格式化特别有用:

# 输出乘法表
print("乘法表:")
for i in range(1, 6):
    for j in range(1, 6):
        print(f"{i}×{j}={i*j:2d}", end="  ")
    print()

# 输出学生成绩表
students = [
    ("张三", 85, 92, 78),
    ("李四", 90, 88, 95),
    ("王五", 76, 85, 80)
]

print("\n学生成绩表:")
print("{:<8} {:<6} {:<6} {:<6} {:<6}".format("姓名", "语文", "数学", "英语", "平均"))
print("-" * 40)

for name, chinese, math, english in students:
    avg = (chinese + math + english) / 3
    print(f"{name:<8} {chinese:<6} {math:<6} {english:<6} {avg:<6.1f}")


键盘输入

使用input()函数可以获取用户输入:

# 基本输入
name = input("请输入你的姓名:")
print("你好," + name + "!")

# 数字输入(需要转换)
age = int(input("请输入你的年龄:"))
height = float(input("请输入你的身高(米):"))

print(f"{age}年后你将{age + 10}岁")

# 多个输入
values = input("请输入三个数字,用空格分隔:").split()
a, b, c = map(float, values)
print(f"平均值:{(a + b + c) / 3:.2f}")


文件读写操作

打开文件

使用open()函数打开文件,需要指定文件名和模式:

# 各种打开模式
# 'r'   - 只读(默认)
# 'w'   - 写入,会覆盖原有内容
# 'a'   - 追加,在文件末尾添加
# 'r+'  - 读写
# 'b'   - 二进制模式

# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:
    f.write("这是第一行\n")
    f.write("这是第二行\n")
    f.write("这是第三行\n")

读取文件

# 读取整个文件
with open("example.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print("文件内容:")
    print(content)

# 逐行读取
print("\n逐行读取:")
with open("example.txt", "r", encoding="utf-8") as f:
    for line_num, line in enumerate(f, 1):
        print(f"第{line_num}行: {line.strip()}")

# 读取所有行到列表
with open("example.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    print(f"总共{len(lines)}行")

文件操作实例

# 复制文件
def copy_file(source, destination):
    try:
        with open(source, "r", encoding="utf-8") as src:
            with open(destination, "w", encoding="utf-8") as dst:
                dst.write(src.read())
        print(f"文件已从 {source} 复制到 {destination}")
    except FileNotFoundError:
        print("文件不存在")

# 统计文件信息
def file_info(filename):
    try:
        with open(filename, "r", encoding="utf-8") as f:
            content = f.read()
            lines = content.split('\n')
            words = content.split()
            
            print(f"文件名: {filename}")
            print(f"字符数: {len(content)}")
            print(f"行数: {len(lines)}")
            print(f"单词数: {len(words)}")
    except FileNotFoundError:
        print("文件不存在")

# 使用示例
copy_file("example.txt", "backup.txt")
file_info("example.txt")


文件指针操作

可以控制文件读取的位置:

with open("data.txt", "w+", encoding="utf-8") as f:
    # 写入数据
    f.write("0123456789ABCDEF")
    
    # 移动到开头
    f.seek(0)
    print("文件开头:", f.read(5))  # 读取5个字符
    
    # 移动到第10个字符
    f.seek(10)
    print("第10个字符开始:", f.read())
    
    # 获取当前位置
    position = f.tell()
    print(f"当前位置: {position}")


数据序列化

使用pickle模块可以保存和加载Python对象:

import pickle

# 保存数据
data = {
    "students": ["小明", "小红", "小刚"],
    "scores": [85, 92, 78],
    "teacher": "张老师"
}

with open("school_data.pkl", "wb") as f:
    pickle.dump(data, f)
print("数据已保存")

# 读取数据
with open("school_data.pkl", "rb") as f:
    loaded_data = pickle.load(f)
    print("读取的数据:", loaded_data)


实际应用示例

学生管理系统

def save_students(students, filename="students.txt"):
    """保存学生信息到文件"""
    with open(filename, "w", encoding="utf-8") as f:
        for name, info in students.items():
            f.write(f"{name},{info['age']},{info['grade']}\n")
    print("学生信息已保存")

def load_students(filename="students.txt"):
    """从文件加载学生信息"""
    students = {}
    try:
        with open(filename, "r", encoding="utf-8") as f:
            for line in f:
                name, age, grade = line.strip().split(',')
                students[name] = {
                    'age': int(age),
                    'grade': grade
                }
    except FileNotFoundError:
        print("文件不存在,创建新的学生列表")
    return students

# 使用示例
students = {
    "张三": {"age": 18, "grade": "A"},
    "李四": {"age": 19, "grade": "B"},
    "王五": {"age": 17, "grade": "A"}
}

save_students(students)
loaded_students = load_students()

# 显示学生信息
print("\n学生信息:")
print("{:<8} {:<4} {:<6}".format("姓名", "年龄", "等级"))
for name, info in loaded_students.items():
    print(f"{name:<8} {info['age']:<4} {info['grade']:<6}")

日志记录系统

def write_log(message, level="INFO", filename="app.log"):
    """写入日志"""
    from datetime import datetime
    
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log_entry = f"[{timestamp}] {level}: {message}\n"
    
    with open(filename, "a", encoding="utf-8") as f:
        f.write(log_entry)
    
    print(log_entry.strip())

# 使用示例
write_log("程序启动")
write_log("用户登录成功", "INFO")
write_log("文件处理完成", "SUCCESS")
write_log("发现警告信息", "WARNING")


最佳实践建议

  1. 总是使用with语句:确保文件正确关闭

  2. 指定编码:特别是处理中文时使用encoding="utf-8"

  3. 处理异常:使用try-except处理文件操作错误

  4. 选择合适模式:根据需要选择读取、写入或追加模式

# 好的做法
try:
    with open("data.txt", "r", encoding="utf-8") as f:
        content = f.read()
        # 处理内容
except FileNotFoundError:
    print("文件不存在")
except IOError:
    print("文件读取错误")

# 不好的做法
f = open("data.txt", "r")
content = f.read()
f.close()  # 可能忘记调用

掌握Python的输入输出操作,能够让你编写出更加实用和用户友好的程序。从简单的控制台交互到复杂的文件处理,这些技能在实际开发中都会经常用到。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/course/36_2100

目录选择