Python文本文件的操作示例

读取和处理普通文本文件内容

        要使用文本文件中的信息,首先需要将信息读取到内存中。既可以一次性读取文件的全部内容,也可以逐行读取。

#Python提供了pathlib模块,能够在各种操作系统中处理文件和目录。提供特定
# 功能的模块通常称为库,这就是这个模块被命名为pathlib的原因所在。
from pathlib import Path
# Path类对象指向一个文件,可以用来做很多事,比如让你在使用文件前核实它
# 是否存在,读取文件的内容,以及将数据写入文件。
# 这里打开的文件路径使用了相对路径。需要注意的是在显示文件路径时,Windows
# 系统使用反斜杠\,而不是斜杠/。但是在代码中应该始终使用斜杠/,即使在Windows
# 系统也是如此(pathlib会自动处理,会转换成正确的路径)。
path = Path('shuaifeng.txt')
# read_context()将读取文件的全部内容并作为一个字符串返回(会多返回一
# 个换行符,必要时可以使用字符串对象方法rstrip()删除)。
contexts = path.read_text()
# splitlines()可以将冗长的字符串转换为一系列行,该方法返回一个列表,其
# 中包含文件中所有的行
lines = contexts.splitlines()
pi_string = ''
for line in lines:
    pi_string += line.lstrip().rstrip()

print(pi_string)

        结合Python的异常处理机制:

# 1)将认为可能发生异常的代码放到try代码块,将认为可能发生的错误真正发生后所要运行的代码放
# 到except代码块。程序运行时如果try块的代码运行起来没问题,Python将跳过except代码块;如
# 果try代码块中的代码导致错误,Python将查找与之匹配的except代码块并运行其中的代码。
# 2)如果try-except代码后面还有其他代码,程序将继续运行,因为Python已经知道了如果处理错误。
# 3)还可以结合else代码块一起使用,只有try块代码成功执行才需要继续执行的代码,都应放到else
# 代码块(否则如上述2)即使错误也会执行)。
from pathlib import Path
def count_words(path):
    """计算一个文件大致包含多少个单词"""
    try:
        # 如果系统的默认编码与要读取的文件的编码不一致,参数encoding必不可少。
        contents = path.read_text(encoding='utf-8')
    except FileNotFoundError:
        #print(f'The file {path} does not exist.')
        pass    # pass语句表示什么也不做,其中pass等价于三个点" ... "
    else:
        words = contents.split()
        num_words = len(words)
        print(f'The file {path} has about {num_words} words.')

filenames = ['shuaifeng.txt', 'shuaifeng0.txt', 'shuaifeng1.txt']
for filename in filenames:
    path = Path(filename)
    count_words(path)

将数据写入普通文件

        定义一个文件的路径后,就可以使用write_text()将数据写入该文件了。需要注意的是Python只能将字符串写入文本文件。如果需要将数值数据存储到文本文件中,必须先使用str函数将其转换为字符串格式。

from pathlib import Path
path = Path('shuaifeng.txt')
contents = "Hello C++\n"
contents += "Hello Rust\n"
contents += "Hello Python\n"
# 如果path变量对象路径指向的文件不存在,就会创建它;如果指定的文件已
# 经存在,就会删除其内容,并将指定的内容写入其中。
path.write_text(contents)

使用json模块

        模块json能够将Pyhon数据结构转换为JSON格式(JavaScript Object Notation格式最初是由JavaScript开发的,但随后成了一种通用的格式,被包括Python在内的众多语言采用)的字符串,并在程序再次运行时从文件中加载数据。另外还可以使用json在Python程序之间共享数据。更重要的是,JSON数据格式并不是Python专用的,因此能够将以JSON格式存储的数据与使用其他编程语言的人共享。

from pathlib import Path
import json

def get_stored_username(path):
    """如果存储了用户就获取它"""
    if path.exists():   # 如果name.json存在
        # .json也是特殊格式的文本文件,因此可以使用read_text()方法读取
        contents = path.read_text()
        # 将文件的内容传递给json.loads(),这个函数将一个JSON格式的字符串作为参数,
        # 并返回一个Python对象,这里是一个列表对象。
        username = json.loads(contents)
        return username
    else:
        return None

def get_new_username(path):
    """提示用户输入用户名"""
    username = input('What is your name? ')
    # 使用json.dumps()函数生成一个字符串,它包含我们要存储数据的JSON表示形式。
    contents = json.dumps(username)
    path.write_text(contents)
    return username

def greet_user():
    """问候用户并指出其名字"""
    # 选择一个文件名,指定要用户名存储到的文件为name.json,通常使用
    # 扩展名.json来指出文件存储的数据格式为JSON格式。
    path = Path('name.json')
    username = get_stored_username(path)
    if username:
        print(f"Welcom back, {username}")
    else:
        print(f"We'll remember you when you come back, {username}!")


greet_user()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张帅峰_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值