Python中的文件输入输出问题

 更新时间:2022年11月24日 09:44:39   作者:waifdzdn  
这篇文章主要介绍了Python中的文件输入输出问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python文件输入输出

本文以.txt文件为例,说明Python从.txt文件中读取内容和向.txt文件写入内容的方法。

a.txt文件内容:

犬吠水声中,桃花带雨浓。
树深时见鹿,溪午不闻钟。
野竹分青霭,飞泉挂碧峰。
无人知所去,愁倚两三松。

文件输入

读取文件:

open(filename, mode)

open返回一个文件对象。

第一个参数是一个包含文件名的字符串。

第二个参数是描述文件的使用模式,mode='r’表示只读,mode='w’表示只写,mode=‘r+’表示可读可写,mode=‘a’表示打开文档并把要写的内容附在文档末尾,不会删除文档已有内容。

默认模式为’r’。

poem = open('./a.txt', 'r')
print(poem)

# 输出
# <_io.TextIOWrapper name='./a.txt' mode='r' encoding='UTF-8'>
poem = open('./a.txt', 'r')
print(list(poem))

# 输出
# ['犬吠水声中,桃花带雨浓。\n', '树深时见鹿,溪午不闻钟。\n', '野竹分青霭,飞泉挂碧峰。\n', '无人知所去,愁倚两三松。\n']

通常我们使用with关键字来读取文件对象,with关键字可以在with语句结束后自动关闭文件,避免一直占用计算机内存资源。

with open('./a.txt', 'r') as f:
    d = f.read()
    print(d)
print(f.closed)

# 输出
# 犬吠水声中,桃花带雨浓。
# 树深时见鹿,溪午不闻钟。
# 野竹分青霭,飞泉挂碧峰。
# 无人知所去,愁倚两三松。
# True

除了读取文件中的所有内容,我们还可以一行一行的读取文件。

with open('./a.txt') as f:
    for line in f:
        print(line)

# 输出
# 犬吠水声中,桃花带雨浓。

# 树深时见鹿,溪午不闻钟。

# 野竹分青霭,飞泉挂碧峰。

# 无人知所去,愁倚两三松。

因为在每一行末尾处都带有换行符,因此每行之间都有一行为空。可以验证一下:

with open('./a.txt') as f:
    d = f.readlines()
    print(d)

# 输出
# ['犬吠水声中,桃花带雨浓。\n', '树深时见鹿,溪午不闻钟。\n', '野竹分青霭,飞泉挂碧峰。\n', '无人知所去,愁倚两三松。\n']

我们可以通过str.strip([chars])函数来删除字符串末尾的换行符。

strip()函数可以删除字符串首尾的指定字符或者字符串,参数chars指定了要删除的字符的集合。

如果没有指定,则默认为空格或者换行符。

但是strip()只能删除开头或者结尾的字符或字符串,不能删除中间部分的字符。

with open('./a.txt') as f:
    for line in f:
        print(line.strip())

# 输出
# 犬吠水声中,桃花带雨浓。
# 树深时见鹿,溪午不闻钟。
# 野竹分青霭,飞泉挂碧峰。
# 无人知所去,愁倚两三松。

因为字符串是不可变对象,因此,strip()函数并不是在原来的字符串中直接进行删除,而是将删除首尾字符后的字符串作为一个新对象并返回。

可以验证一下:

a = '  special  ' # 创建一个字符串对象并将变量a指向它
print(id(a)) # 打印a在内存中的地址
a = a.strip() # 将删除首尾空格后的字符串作为一个新对象,并将a指向它
print(id(a)) # 打a串在内存中的地址

# 输出
# 140251513494960
# 140251513470680

可得看到,删除前后的字符串地址并不相同,说明它们是不同的对象。

文件输出

with open('./a.txt', 'a') as f:
    f.write('作者:李白\n')

with open('./a.txt', 'r') as f:
    for line in f:
        print(line.strip())

# 输出
# 犬吠水声中,桃花带雨浓。
# 树深时见鹿,溪午不闻钟。
# 野竹分青霭,飞泉挂碧峰。
# 无人知所去,愁倚两三松。
# 作者:李白

Python输入输出语法

Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的输入输出用法并举几个案例深入学习一下。

输入和输出

1、输出

  • 在Python中使用print()函数进行输出。
  • 输出字符串时可用单引号或双引号括起来;
  • 输出变量时,可不加引号;
  • 变量与字符串同时输出或多个变量同时输出时,需用“,”隔开各项。

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”

例:使用print()函数输出数据。

print("这是一个输出示例")  # print()函数使用双引号输出示例
url = 'www.xxx.com'  # 创建变量url,赋值为'www.xxx.com'
print('我们的网址是', url)  # print()函数使用单引号输出变量url

运行结果如下。

2、输入

Python提供了input()函数用于获取用户键盘输入的字符。

input()函数让程序暂停运行,等待用户输入数据,当获取用户输入后,Python将其以字符串的形式存储在一个变量中,方便后面使用。

例:使用input()函数实现输入。

password = input("请输入密码:")  # 输入数据赋给变量password
print('您刚刚输入的密码是:', password)  # 输出数据

运行结果如下。

案例

例1:求两数之和

编写程序,要求输入两个整数,求两数之和后输出。

(1)可使用int()函数将输入的字符串转化为整型数据。

(2)可使用float()函数将字符串转化为浮点型数据。

a = input("请输入第一个整数:")  # 输入变量a的值
b = input("请输入第二个整数:")  # 输入变量b的值
a = int(a)  # 将变量a转换为整型数
b = int(b)  # 将变量b转换为整型数
c = a + b  # 两数相加赋给c
print("两数之和为:", c)  # 输出c的值

运行结果如下。

例2:求三角形的面积

编写程序,要求输入三角形的三条边(假设给定的三条边符合构成三角形的条件:任意两边之和大于第三边),计算三角形的面积并输出。

import math  # 导入math模块

a = int(input("请输入三角形的第一条边:"))  # 输入第一条边并将其转换为整型
b = int(input("请输入三角形的第二条边:"))  # 输入第二条边并将其转换为整型
c = int(input("请输入三角形的第三条边:"))  # 输入第三条边并将其转换为整型
s = 1 / 2 * (a + b + c)  # 计算s
area = math.sqrt(s * (s - a) * (s - b) * (s - c))  # 调用sqrt函数计算面积
print("此三角形面积为:", area)  # 输出三角形面积

运行结果如下。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 虚拟环境及venv和virtualenv的区别说明

    虚拟环境及venv和virtualenv的区别说明

    这篇文章主要介绍了虚拟环境及venv和virtualenv的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 详解Python中最常用的10个内置函数

    详解Python中最常用的10个内置函数

    Python作为一种多用途编程语言,拥有丰富的内置函数库,这些函数可以极大地提高开发效率,本文将介绍Python中最常用的10个内置函数,我们将深入了解每个函数,并提供示例代码以帮助您更好地理解它们,需要的朋友可以参考下
    2023-11-11
  • virtualenv实现多个版本Python共存

    virtualenv实现多个版本Python共存

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用
    2017-08-08
  • pygame开发:马赛逻辑小游戏的代码实现

    pygame开发:马赛逻辑小游戏的代码实现

    这篇文章主要介绍了pygame开发,通过本文,您可以使用pygame开发一个马赛逻辑小游戏~有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Pandas进行数据编码的十种方式总结

    Pandas进行数据编码的十种方式总结

    在机器学习中,很多算法都需要我们对分类特征进行转换(编码),即根据某一列的值,新增(修改)一列。本文为大家总结了Pandas中十种数据编码的方式,需要的可以参考一下
    2022-04-04
  • Python shutil模块用法实例分析

    Python shutil模块用法实例分析

    这篇文章主要介绍了Python shutil模块用法,结合实例形式分析了Python使用shutil模块操作文件拷贝的相关实现技巧与注意事项,需要的朋友可以参考下
    2019-10-10
  • Python中的变量和数据类型详情

    Python中的变量和数据类型详情

    这篇文章主要介绍了Python中的变量和数据类型详情,变量不需要声明即可使用,向变量赋值即定义变量,python中的数据类型包括数值类型、列表、元组等内容,下面文章的详细介绍,需要的小伙伴可以参考一下
    2022-03-03
  • python+influxdb+shell编写区域网络状况表

    python+influxdb+shell编写区域网络状况表

    这篇文章主要为大家详细介绍了python+influxdb+shell编写区域网络状况表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python+openCV对视频进行截取的实现

    python+openCV对视频进行截取的实现

    这篇文章主要介绍了python+openCV对视频进行截取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python正则-re的用法详解

    python正则-re的用法详解

    这篇文章主要介绍了python正则-re的用法详解,文中给大家提到了正则中的修饰符以及它的功能,需要的朋友可以参考下
    2019-07-07

最新评论