Python文件操作与数据处理实战指南

深入Python编程:文件操作、网络抓取与数据处理 本文深入探讨了Python编程中的文件操作、网络抓取和数据处理技术。通过PyInputPlus模块的使用、文件读写的实践项目,以及利用openpyxl和EZSheets模块对Excel和Google Sheets的处理,介绍了如何在Python中高效地管理数据和自动化任务。同时,涵盖了PDF和Word文档的读写操作,以及CSV文件和JSON数据的处理方法。 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击这里】

前言
文件操作与数据处理是Python编程中最基础也是最重要的技能之一。无论是数据分析、Web开发还是自动化脚本编写,都离不开对文件的读写和各种数据处理操作。本文将全面介绍Python中的文件操作方法和常用数据处理技巧,帮助开发者高效地处理各类数据任务。

一、Python基础文件操作
1.1 文件打开与关闭
Python使用内置的open()函数进行文件操作,基本语法如下:

file = open(filename, mode='r', encoding=None)

常用模式参数:

‘r’:只读(默认)

‘w’:写入,会覆盖已有文件

‘a’:追加,在文件末尾添加

‘x’:独占创建,文件已存在则失败

‘b’:二进制模式

‘t’:文本模式(默认)

‘+’:更新(可读可写)

推荐使用上下文管理器(with语句):

with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
# 文件会在with块结束后自动关闭

1.2 文件读写方法
在这里插入图片描述
示例代码:

# 写入文件
with open('data.txt', 'w', encoding='utf-8') as f:
    f.write('第一行内容\n')
    f.write('第二行内容\n')
    f.writelines(['第三行\n', '第四行\n'])

# 读取文件
with open('data.txt', 'r', encoding='utf-8') as f:
    print(f.read())  # 读取全部内容
    f.seek(0)  # 重置文件指针到开头
    print(f.readline())  # 读取一行
    f.seek(0)
    print(f.readlines())  # 读取所有行到列表

二、常见文件格式处理
2.1 CSV文件处理
使用标准库csv:

import csv

# 写入CSV文件
data = [
    ['姓名', '年龄', '城市'],
    ['张三', 25, '北京'],
    ['李四', 30, '上海']
]

with open('people.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(data)

# 读取CSV文件
with open('people.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# 字典形式读写
with open('people_dict.csv', 'w', newline='', encoding='utf-8') as f:
    fieldnames = ['name', 'age', 'city']
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'name': '王五', 'age': 28, 'city': '广州'})

with open('people_dict.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row['name'], row['age'])

2.2 JSON文件处理

import json

# Python对象转JSON
data = {
    "name": "张三",
    "age": 25,
    "hobbies": ["读书", "游泳"],
    "married": False
}

# 写入JSON文件
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 读取JSON文件
with open('data.json', 'r', encoding='utf-8') as f:
    loaded_data = json.load(f)
    print(loaded_data['name'])

2.3 Excel文件处理(使用openpyxl)

from openpyxl import Workbook, load_workbook

# 创建Excel文件
wb = Workbook()
ws = wb.active
ws.title = "员工信息"

# 写入数据
ws.append(['姓名', '部门', '工资'])
ws.append(['张三', '技术部', 15000])
ws.append(['李四', '市场部', 12000])

# 保存文件
wb.save('employees.xlsx')

# 读取Excel文件
wb = load_workbook('employees.xlsx')
ws = wb.active

for row in ws.iter_rows(values_only=True):
    print(row)

三、高效数据处理技巧
3.1 使用Pandas进行数据处理
Pandas是Python中最强大的数据处理库之一,特别适合处理结构化数据。

import pandas as pd

# 从CSV创建DataFrame
df = pd.read_csv('people.csv')
print(df.head())

# 基本数据处理
print(df.describe())  # 统计描述
print(df.sort_values('年龄', ascending=False))  # 排序
print(df[df['年龄'] > 25])  # 条件筛选

# 数据清洗
df.dropna()  # 删除空值
df.fillna(0)  # 填充空值
df['年龄'] = df['年龄'].astype(int)  # 类型转换

# 保存处理结果
df.to_excel('processed_data.xlsx', index=False)

3.2 大数据文件处理策略
对于大文件,应避免一次性读取全部内容:

# 逐行处理大文本文件
with open('large_file.txt', 'r', encoding='utf-8') as f:
    for line in f:
        process_line(line)  # 自定义处理函数

# 分块读取大CSV文件
chunk_size = 10000
for chunk in pd.read_csv('large_data.csv', chunksize=chunk_size):
    process_chunk(chunk)

# 使用生成器处理数据
def read_large_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        while True:
            data = f.read(1024)  # 每次读取1KB
            if not data:
                break
            yield data

for chunk in read_large_file('very_large_file.txt'):
    process_chunk(chunk)

四、高级文件操作
4.1 目录遍历与文件操作

import os
from pathlib import Path

# 使用os模块
print(os.listdir('.'))  # 列出当前目录文件
os.makedirs('new_dir', exist_ok=True)  # 创建目录

# 使用更现代的pathlib
base_path = Path('.')
for file in base_path.glob('*.txt'):  # 查找所有txt文件
    print(file.name, file.stat().st_size)  # 文件名和大小

# 递归遍历目录
for root, dirs, files in os.walk('some_directory'):
    for file in files:
        print(os.path.join(root, file))

4.2 文件压缩与解压

import zipfile
import gzip
import shutil

# ZIP文件处理
with zipfile.ZipFile('archive.zip', 'w') as zf:
    zf.write('file1.txt')
    zf.write('file2.txt')

with zipfile.ZipFile('archive.zip', 'r') as zf:
    zf.extractall('extracted_files')

# GZIP压缩
with open('large_file.txt', 'rb') as f_in:
    with gzip.open('large_file.txt.gz', 'wb') as f_out:
        shutil.copyfileobj(f_in, f_out)

4.3 内存文件操作(StringIO/BytesIO)

from io import StringIO, BytesIO

# 内存文本文件
string_io = StringIO()
string_io.write('Hello ')
string_io.write('World!')
print(string_io.getvalue())  # Hello World!

# 内存二进制文件
bytes_io = BytesIO()
bytes_io.write(b'binary data')
print(bytes_io.getvalue())

五、实战案例:日志文件分析

import re
from collections import Counter

def analyze_logs(log_file):
    # 统计IP访问次数
    ip_pattern = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
    ip_counter = Counter()
    
    # 统计状态码
    status_pattern = re.compile(r'HTTP/1.\d" (\d{3})')
    status_counter = Counter()
    
    with open(log_file, 'r', encoding='utf-8') as f:
        for line in f:
            # 提取IP
            ip_match = ip_pattern.search(line)
            if ip_match:
                ip_counter[ip_match.group()] += 1
                
            # 提取状态码
            status_match = status_pattern.search(line)
            if status_match:
                status_counter[status_match.group(1)] += 1
    
    # 输出结果
    print("Top 10 IPs:")
    for ip, count in ip_counter.most_common(10):
        print(f"{ip}: {count}次")
    
    print("\n状态码统计:")
    for status, count in status_counter.most_common():
        print(f"{status}: {count}次")

# 使用示例
analyze_logs('web_server.log')

六、最佳实践与注意事项
编码问题:

始终明确指定文件编码(推荐UTF-8)

处理不同编码文件时使用chardet检测编码

路径处理:

使用os.path.join()或pathlib构建跨平台路径

避免硬编码路径,使用配置文件或命令行参数

资源管理:

始终确保文件正确关闭(推荐使用with语句)

大文件处理时注意内存使用

错误处理:

捕获和处理文件操作可能抛出的异常(FileNotFoundError, PermissionError等)

实现重试机制处理临时性IO错误

性能优化:

批量读写优于单次操作

考虑使用内存映射文件处理超大文件

结语
Python提供了丰富而强大的文件操作和数据处理能力,从简单的文本文件到复杂的Excel表格,从基本的字符串处理到高级的数据分析,Python都能优雅地完成任务。掌握这些技能将大大提高您的开发效率和数据处理能力。

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里领取!】
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

Python大数据处理实战作业详细指南 本文还有配套的精品资源,点击获取 简介:Python是数据分析、机器学习和大数据处理的流行语言,其简洁的语法和丰富的库使得它在处理大数据方面十分有效。本压缩包提供了一系列的大数据作业实践,目的是帮助初学者提升数据处理的能力。实践内容涵盖数据读取、数据清洗、数据探索、数据操作、大数据处理工具、MapReduce编程模型、数值计算库应用、数据挖掘与机器学习、时间序列分析、数据库... 阅读详情

相关推荐

ICNN实现入侵检测的思路与源码(CIC-IDS-2017)

基于ICNN实现入侵检测,可用于现实网络

t1274171989的博客 8415

5个有趣的Python实战项目(帮你快速掌握python语法)

Python可以玩的方向有很多,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。 因为Python是动态脚本语言,所以代码逻辑比Java要简要很多,实现同样的功能少写很多代码。而且Python生态有众多的第三方工具库,把功能都封装在包里,只需要你调用接口,就能使用复杂的功能。 下面举几个简单好玩的脚本例子,初学者可以照着代码写写,能快速掌握python语法。

Python_9521的博客 663

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1026

python对txt文件进行处理实战_python数据处理实战

二、需求 对杂乱文本数据进行处理部分数据截图如下,第一个字段是原字段,后面3个是清洗出的字段,从数据库中聚合字段观察,乍一看数据比较规律,类似(币种 金额万元)这样,我想着用sql写条件判断,统一转换为‘万元人民币'单位,用sql脚本进行字符串截取即可完成,但是后面发现数据并不规则,条件判断太多清洗质量也不一定,有的前面不是左括号,有的字段里面没有币种,有的数字并不是整数,有的没有万字,这样如果存...

weixin_36123300的博客 2081

告别裸奔MCU!手把手教你用MCP2515+STM32搭建稳定CAN总线通信(附完整代码)

本文详细介绍了如何使用MCP2515与STM32搭建稳定可靠的CAN总线通信系统,适用于汽车电子和工业控制领域。通过硬件架构设计、驱动层实现、数据收发实战及故障排查手册,帮助开发者快速掌握CAN通信技术,提升系统稳定性和开发效率。

weixin_28703489的博客 208

软件测试--用例篇(测试用例的好处、测试用例的七种设计方法、测试用例的粒度、测试用例的评价)

作为软件测试工程师,最主要的工作就是:编写测试用例,那么为什么要编写测试用例?它有什么好处?如何编写测试用例?测试用例写简单好还是复杂好?如何评价测试用例的质量? 天呐撸!能说不会吗?! 作为倾向软件测试工程师的老铁们,还是一起来学习吧! 一、编写测试用例的好处 测试用例是测试者的依据 测试用例使得工作可重复,是自动化测试的基础 补充:自动化测试的前提条件是:功能比较稳定,页面...

cherrydreamsover的博客 3734

Python数据处理与文件操作实战指南

数据处理是编程中的基础技能,涉及数据清洗、转换和分析等核心操作。通过列表推导式和字典统计等Python特性,可以高效完成常见的数据处理任务。文件操作则是持久化存储的关键技术,合理使用上下文管理器和编码处理能确保数据读写安全。在工程实践中,函数封装和模块化设计能显著提升代码复用率,而单元测试和PEP8规范则是保障代码质量的重要手段。本文以Python作业为场景,详细演示了学生成绩分析和文本词频统计两个典型案例的实现过程,涵盖从基础语法到性能优化的完整开发流程。特别针对文件读写和数据处理等高频需求,给出了避免常

weixin_31188927的博客 147

Holt-Winters方法预测水电发电量

Holt-Winters 模型, ARMIA,ACF检验 ,Dickey-Fuller 检测,白噪声检测,差分

firefox_yau的博客 1270

Python文件操作与数据处理实战:从基础到高级应用指南

在日常开发中,文件操作与数据处理是Python程序员必备的核心技能。无论是配置文件解析、数据格式转换还是复杂的计算任务,Python都提供了简洁而强大的工具集。本文将带你系统掌握文件读写、配置解析、数据计算等实用技能,结合ActiveState Code Recipes项目中的经典案例,让你快速提升实战能力。 ## 一、配置文件解析:轻松读取INI格式数据 INI文件是Windows系统中常用

gitblog_00887的博客 927

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2605

Halcon实例转OpenCVSharp--粘连物体分割与计数(基于距离变换+分水岭算法) (附源码)

本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp应用实例--粘连物体分割与计数(基于距离变换+分水岭算法)! 本文使用的OpenCVSharp版本---》v4.5.3。 实现目标:将下图中的硬币分割出来并计算数量。 预期效果图: ...

Color Space的博客 2419

Python文件操作与数据处理实战:从CSV读取到可视化完整指南

在Python编程学习中,文件读写与数据处理是跨过分水岭的关键技能。现实中的程序往往需要从外部文件获取数据,而CSV作为最常见的数据交换格式,其读取、清洗与统计是每位开发者必须掌握的基础能力。本实战指南围绕一次典型作业展开:使用pandas读取学生成绩表,通过类型转换处理缺失值,利用numpy计算总分、平均分与极值,最终借助matplotlib绘制柱状图。整个过程覆盖环境配置、虚拟环境搭建、编码问题排查等工程实践细节,帮助读者理解数据流向:获取、清洗、分析、可视化。无论是处理考试数据、业务报表还是爬虫结果,

weixin_34098209的博客 242

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

WW、forever的博客 1567

python基础入门:6.2JSON与CSV数据处理

【代码】python基础入门:6.2JSON与CSV数据处理。

赵鑫亿的博客 543

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python热门模块实战指南

Python常用模块速览:内置模块os/sys处理系统操作,math/random提供数学功能;数据处理模块json/csv/re用于数据格式转换和分析;第三方模块requests/pandas/numpy支持网络请求与科学计算;文件操作模块shutil/zipfile简化文件管理;测试模块unittest构建可靠测试框架。这些模块覆盖系统操作、数据处理、网络请求、科学计算和自动化测试等核心场景,是提升Python开发效率的关键工具。

weixin_46060074的博客 1154

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python 字典与文件操作完全指南

【代码】Python 字典与文件操作完全指南。

2401_83806503的博客 223

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

三天快速掌握Python的高效学习方案(含关键技巧和避坑指南)

这篇教程提供了一个3天掌握Python编程的速成计划,分为基础语法、逻辑结构与数据处理、项目实战三个阶段。第一天重点学习核心语法和环境搭建,第二天深入数据结构和文件操作,第三天完成Web开发和项目部署。教程强调实践导向,推荐代码逆向法和错题攻防战等高效学习策略,并给出后续提升方向(数据科学/Web开发/自动化)。关键建议包括每天保证4小时编码实践、优先掌握pandas和requests库,以及学习后立即参与实战项目巩固技能。该方案承诺三天内达到独立开发脚本、搭建Web应用和完成自动化任务的水平。

欢迎光临~知1而N的博客 929

Python8/Python完整学习指南:10个核心模块助你从零到精通

Python8/Python项目是面向初学者的完整学习资源,包含丰富的代码示例和教程文件,帮助你快速掌握Python编程技能。无论你是零基础入门还是有一定编程经验想要提升,本指南将带你系统学习10个核心模块,轻松实现从入门到精通的跨越。 ## 1. 数据结构基础:构建Python编程基石 数据结构是Python编程的基础,掌握它们能让你更高效地处理数据。项目中的[Intro to Python

gitblog_01140的博客 296

Python文件操作与数据处理

本文将带你深入学习文件读写、CSV/JSON/Excel 数据处理、正则表达式以及日志记录与异常处理,并通过实践目标,帮助你掌握如何自动化处理 Excel 报表和爬取网页数据。

2301_78217634的博客 1069

跟我一起学 Python 数据处理(十四):基础文件操作与数据导入

在数据驱动的时代,Python 成为了数据处理领域的一把利器。今天,就让我们一起踏上 Python 数据处理的学习之旅,从最基础的文件操作和常见数据格式导入开始

yyy173611的博客 7664

lesson15:Python的文件操作

本文系统介绍了Python文件操作的核心知识,包括三个主要模块:文件基础操作、文件系统交互和JSON数据处理。首先详细解析了open()函数的基本语法和参数配置,涵盖文本/二进制文件的读写操作及with语句的优势。其次讲解了os和os.path模块的路径处理、目录管理和文件属性操作。最后深入探讨了json模块的序列化与反序列化技术,包括自定义数据类型处理。文章还提供了批量处理文本文件和JSON配置文件读写的实战案例,并总结了路径拼接、编码规范、异常处理等最佳实践。通过本文,读者可以全面掌握Python文件操

2402_82363599的博客 1188

Python 快速入门:基础语法与数据处理实战

通过本文的学习,你已经掌握了 Python 的基础语法、数据处理技巧以及文件操作方法。这些知识将为你的编程之旅奠定坚实基础,帮助你在人工智能领域迈出重要一步。不断实践和探索,你将逐步成长为一名优秀的 Python 开发者。

SiArch的博客 1180

Python文件操作与数据处理:从入门到精通的完整指南

Python文件操作与数据处理是每个Python开发者必须掌握的核心技能。无论是处理文本文件、CSV数据、JSON配置还是XML文档,Python都提供了强大而简洁的工具库。本教程将带你从基础到高级,全面掌握Python文件操作与数据处理的最佳实践,让你能够高效地处理各种数据格式和文件类型。 ## 为什么Python文件操作如此重要? 在当今数据驱动的时代,文件操作和数据处理是编程中最常见的任

gitblog_00307的博客 825
上一篇: Python爬虫实战:四个常见案例详解
下一篇: Python基础学习之import用法详解!
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值