IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python文件操作 -> 正文阅读

[Python知识库]python文件操作

文件操作

读取文本文件

在读取文本文件过程中,需要设置mode=‘r’,实现只可读操作,或者不设置mode(默认就是读取操作)

finally —> 总是执行代码(不管正常异常,finally中的代码一定会被执行到)

"""
example01 - 文件操作(读取文本文件)

Author: Asus
Date: 2021/8/9
"""

import sys

print(sys.getdefaultencoding())
file = open(file='files/致橡树.txt', mode='r', encoding='utf-8')
try:
    # print(file.read(15)) # 包括换行符
    # print(file.read(16))
    data = file.read(32)
    while data:
        print(data, end='')
        data = file.read(32)
except:
    print('读文件时发生错误')
finally:    # 捕获到异常finally里的代码也能执行
    file.close()

读取二进制文件(字节文件)

如果希望获得文件的字节数,可以先用seek方法将文件指针移动到文件末尾
然后通过tell方法获取文件指针移动的字节数,这个字节数就是文件的大小

"""
example02 - 文件操作(读取二进制文件(字节文件))

Author: Asus
Date: 2021/8/9
"""
from io import SEEK_END, SEEK_SET

file = open(file='files/guido.jpg', mode='rb')
file.seek(0, SEEK_END)
print(file.tell())
# 将文件指针移动到文件最开始的位置
file.seek(0, SEEK_SET)
try:
    data = file.read(1024)
    while data:
        print(data, end='')
        data = file.read(1024)
finally:
    file.close()

读取Python官方解释器文件

计算MD5哈希码(签名、指纹、摘要)

计算MD5哈希码,目的是检验下载的官方解释器是否被侵入

请添加图片描述

"""
example03 - 读取Python官方解释器文件,计算MD5哈希码(签名、指纹、摘要)

Author: Asus
Date: 2021/8/9
"""
from hashlib import md5, sha256

hasher = md5()
# hasher2 = sha256()
file = open('files/python-3.9.6-amd64.exe', 'rb')
try:
    data = file.read(512)
    while data:
        # 更新MD5对象的数据
        hasher.update(data)
        # hasher2.updata(data)
        data = file.read(512)
finally:
    file.close()
# 获取十六进制形式的MD5哈希摘要
print(hasher.hexdigest())
# print(hasher2.hexdigest())

写文本文件

在写文本文件过程中,需要设置mode=‘w’,实现写操作(会截断之前的内容)

如需要追加内容,则需要把参数改为mode=‘a’

"""
example04 - 文件操作(写文本文件)

Author: Asus
Date: 2021/8/9
"""
file = open('files/小雨康桥的诗.txt', mode='w', encoding='utf-8')
try:
    file.write('我做燕子\n')
    file.write('只需简单思想\n')
    file.write('只求风中流浪\n')
    file.write('我想做树\n')
    file.write('不会寸断肝肠\n')
finally:
    file.close()

with - 上下文语法 - 进入和离开with的时候会自动执行某些操作
下面的写法在离开with上下文的时候,会自动执行file对象的close()方法
操作模式 - a - 创建新文件或将文件指针移动到原文件末尾再写入新内容

example05 - 文件操作(写文件操作)

Author: Asus
Date: 2021/8/9
"""
with open('files/小雨康桥的诗.txt', mode='a', encoding='utf-8') as file:
    file.write('我做不成燕子\n')
    file.write('所以我飞不过感情的墙\n')
    file.write('我做不成树\n')
    file.write('因此也撑不破伤心的网\n')

文件复制

"""
example06 - 文件复制

Author: Asus
Date: 2021/8/9
"""
def file_copy(source_file, target_file):
    """文件拷贝"""
    with open(source_file, 'rb') as source:
        with open(target_file, 'wb') as target:
            data = source.read(512)
            while data:
                target.write(data)
                data = source.read(512)

if __name__ == '__main__':
    file_copy('files/guido.jpg', '/PycharmProjects/day16/copy/Python之父.jpg')

将100以内的质数输出到文件中

"""
example07 -  将100以内的质数输出到文件中(每行一个数)。

Author: Asus
Date: 2021/8/9
"""


def is_prime(num):
    if num == 2 or num == 3:
        return True
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
        return True

def main():
    with open('files/100以内的质数.txt', mode='w', encoding='utf-8') as file:
        for num in range(2, 101):
            if is_prime(num):
                file.write(f'{num}\n')

if __name__ == '__main__':
    main()

请添加图片描述

读取csv文件

delimiter —> 设置分隔符(默认是英文的逗号)
quotechar —> 包裹字符串的符号(默认是英文的双引号)

"""
example09 - 读取CSV (逗号分隔值)文件---> Comma Seperated Value

Author: Asus
Date: 2021/8/9
"""
import csv

with open('files/2018年北京积分落户数据2.csv', encoding='gb18030') as file:
    reader = csv.reader(file)
    for row in reader:
        print(reader.line_num)
        print(row)

写csv文件

"""
example10 - 写csv文件

Author: Asus
Date: 2021/8/9
"""
import csv

with open('files/temperature.txt', encoding='utf-8') as file1:
    with open('files/temperature发热数据.csv', mode='w', encoding='utf-8', newline='') as file2:
        writer = csv.writer(file2)  # delimiter='|'
        # writerow方法的参数是一个列表或元组(代表一行中所有的数据,默认用逗号分隔)
        writer.writerow(['ID', 'temperature', 'information'])
        content = file1.readline()
        while content:
            no, temp = content.split()
            temp = float(temp)
            if temp >= 37.2:
                if temp <= 38.5:
                    info = '发热'
                else:
                    info = '高热'
                print(no, temp, info)
                writer.writerow([no, temp, info])
            content = file1.readline()
 temp <= 38.5:
                    info = '发热'
                else:
                    info = '高热'
                print(no, temp, info)
                writer.writerow([no, temp, info])
            content = file1.readline()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:18:43  更:2021-08-11 12:22:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:19:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码