博客
关于我
python文件处理
阅读量:796 次
发布时间:2023-03-24

本文共 2284 字,大约阅读时间需要 7 分钟。

文件处理

文件是计算机存储中的一些信息或数据。文本文件和二进制文件是常见的文件类型。Python 提供了简单的文件操作方式。

知识点

  • 文件打开模式
  • 文件读取与写入
  • with 语句
  • lscpu 命令的实现

  • 实验步骤

    1. 文件打开

    使用 open() 函数打开文件。需要两个参数:

    • 文件路径/文件名
    • 文件打开模式

    常见模式:

    • r:只读模式
    • w:写入模式(若文件存在则删除内容)
    • a:追加模式

    默认模式为只读。我们准备实验材料,下载并打开文件:

    wget http://labfile.oss.aliyuncs.com/courses/596/sample.txt

    在 Python 中打开文件:

    fobj = open("sample.txt")

    2. 文件关闭

    打开文件后,务必关闭。使用 close() 方法:

    fobj.close()

    关闭文件的重要性:

    • 避免文件描述符耗尽
    • 解决内存泄漏问题

    3. 文件读取

    读取文件内容:

    • 全部读取:read()
    • 逐行读取:readline()readlines()
    • 逐行处理:循环文件对象

    示例:

    fobj = open("sample.txt")print(fobj.read())  # 输出全部内容print(fobj.readline())  # 读取一行fobj.close()

    读取文件时,逐行读取更高效。可以用 read(size) 读取指定长度数据。

    4. 文件写入

    写入文件:

    • 使用 write() 方法
    • 可以写入多次

    示例:

    fobj = open("ircnicks.txt", "w")fobj.write("powerpork\n")fobj.write("indrag\n")fobj.close()

    验证文件内容:

    fobj = open("ircnicks.txt")print(fobj.read())fobj.close()

    5. 文件操作示例程序

    5.1. 拷贝文件

    将文件内容从一个文件复制到另一个文件。使用 sys.argv 获取命令行参数:

    #!/usr/bin/env python3import sysif len(sys.argv) < 3:    print("错误:参数不足")    print("./copyfile.py file1 file2")    sys.exit(1)f1 = open(sys.argv[1])s = f1.read()f1.close()f2 = open(sys.argv[2], "w")f2.write(s)f2.close()

    运行程序:

    ./copyfile.py sample.txt newfile.txt

    5.2. 文本文件信息统计

    统计空格、制表符和行数:

    #!/usr/bin/env python3import osimport sysdef parse_file(path):    """分析文本文件,返回空格、制表符和行数"""    fd = open(path)    spaces = 0    tabs = 0    lines = 0    for line in fd:        spaces += line.count(' ')        tabs += line.count('\t')        lines += 1    fd.close()    return spaces, tabs, linesdef main(path):    """打印文件分析结果"""    if os.path.exists(path):        spaces, tabs, lines = parse_file(path)        print(f"空格数:{spaces},制表符数:{tabs},行数:{lines}")        return True    else:        print(f"文件 {path} 不存在")        return Falseif __name__ == "__main__":    if len(sys.argv) > 1:        main(sys.argv[1])    else:        sys.exit(-1)sys.exit(0)

    运行程序:

    ./filestats.py sample.txt

    6. 使用 with 语句

    推荐使用 with 语句管理文件:

    with open("sample.txt") as fobj:    for line in fobj:        print(line)

    with 语句的优势:

    • 自动关闭文件
    • exception-safe

    7. 实现 lscpu 命令

    lscpu 命令显示 CPU 信息。我们可以通过读取 /proc/cpuinfo 文件实现:

    with open("/proc/cpuinfo", "r") as fcpu:    for line in fcpu:        print(line.strip())

    lscpu 的实现原理:

    • 读取 /proc/cpuinfo 文件
    • 格式化输出信息

    总结

    本实验学习了文件的基本操作,包括打开、读取、写入和关闭文件。通过 with 语句优化了文件管理,避免了手动关闭文件的麻烦。在 Linux 中,文件操作是日常工作的重要技能。lscpu 命令的实现展示了对系统资源的深入理解。

    转载地址:http://teqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现字符串word patterns单词模式算法(附完整源码)
    查看>>
    Objective-C实现字符串Z 函数或 Z 算法(附完整源码)
    查看>>
    Objective-C实现字符串加解密(附完整源码)
    查看>>
    Objective-C实现字符串复制功能(附完整源码)
    查看>>
    Objective-C实现字符串是否回文Palindrome算法 (附完整源码)
    查看>>
    Objective-C实现字符串查找子串(附完整源码)
    查看>>
    Objective-C实现完整的ComplexNumber复数类(附完整源码)
    查看>>
    Objective-C实现实现rabin karp算法(附完整源码)
    查看>>
    Objective-C实现对图像进行色调处理算法(附完整源码)
    查看>>
    Objective-C实现对称矩阵压缩存储(附完整源码)
    查看>>
    Objective-C实现寻找欧拉路径/回路(附完整源码)
    查看>>
    Objective-C实现导弹跟踪算法(附完整源码)
    查看>>
    Objective-C实现将 base64 字符串转换为字节数组算法(附完整源码)
    查看>>
    Objective-C实现将位转换为浮点数bitsToFloat算法(附完整源码)
    查看>>
    Objective-C实现将列表向右旋转 k 个位置算法(附完整源码)
    查看>>
    Objective-C实现将字符串中大写字母转换为小写字母(附完整源码)
    查看>>
    Objective-C实现将字符串从一个基转换为另一个基算法(附完整源码)
    查看>>
    Objective-C实现将字节数组转换为 base64 编码算法(附完整源码)
    查看>>
    Objective-C实现将彩色图像转换为负片算法(附完整源码)
    查看>>
    Objective-C实现将无符号整数n变成成d进制表示的字符串s(附完整源码)
    查看>>