首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 怎么读取文件?Python 怎么导入数据?

Python 怎么读取文件?Python 怎么导入数据?

原创
作者头像
用户11176925
发布2025-08-08 14:35:04
发布2025-08-08 14:35:04
8110
举报
文章被收录于专栏:技术栏目技术栏目

在 Python 的世界里,读取文件和导入数据是极为基础且重要的操作,无论是进行数据分析、处理文本,还是开发各类应用,都离不开这两项技能。今天,咱们就来深入探讨一下 Python 在这方面的各种门道。

Python 读取文件的多种姿势

基础操作:open 函数与 with 语句

在 Python 中,打开文件的基础操作是使用open函数。比如,我们要读取一个名为example.txt的文本文件,代码可以这样写:

代码语言:javascript
复制
file = open('example.txt', 'r')content = file.read()file.close()print(content)

这里,open函数的第一个参数是文件名,第二个参数'r'表示以只读模式打开文件。读取完内容后,使用close方法关闭文件,这是良好的编程习惯,能释放系统资源。不过,这种写法存在一个风险,如果在读取过程中发生异常,文件可能无法正常关闭。这时候,with语句就派上用场了,它能自动处理文件的打开和关闭,让代码更安全、简洁:

代码语言:javascript
复制
cee.qianxinancw.com with open('example.txt', 'r') as file:    content = file.read()    print(content)

在with语句块结束时,文件会自动关闭,即使发生异常也不例外。

不同读取方法的适用场景

  1. read 方法:一次性读取整个文件内容,返回一个字符串。适用于文件较小的情况,比如配置文件等。像这样:
代码语言:javascript
复制
with open('small_file.txt', 'r') as file:    content = file.read()    print(content)
  1. readline 方法:逐行读取文件内容。每次调用该方法,会读取文件的下一行,返回的字符串包含行末的换行符。常用于处理较大的文本文件,避免一次性将整个文件读入内存,造成内存压力。例如:
代码语言:javascript
复制
with open('large_file.txt', 'r') as file: cef.xiaoda.net   line = file.readline()    while line:        print(line.strip())  # 使用strip方法去除行末的换行符        line = file.readline()
  1. readlines 方法:将文件的所有行读取到一个列表中,列表的每个元素是文件的一行内容,同样包含行末的换行符。如果文件不是特别大,且需要对所有行进行统一操作,比如统计行数、对所有行进行特定格式转换等,这种方法比较方便:
代码语言:javascript
复制
with open('file.txt', 'r') as file:    lines = file.readlines()    for line in lines:        print(line.strip())
  1. 迭代文件对象:这是一种内存效率较高的逐行读取方式,直接对文件对象进行迭代。在处理大文件时,这种方法尤为推荐,因为它不会一次性将所有行存储在内存中,而是逐行处理:
代码语言:javascript
复制
with open('big_file.txt', 'r') as file:    for line in file:        print(line.strip())

文件模式的奥秘

在使用open函数时,文件模式是个关键参数,它决定了我们对文件的操作权限和方式。常见的文件模式有:

  • 'r':只读模式,这是默认值。如果文件不存在,会抛出异常。
  • 'w':写入模式(ceg.minxiangfood.com)。若文件已存在,会覆盖原有内容;若文件不存在,则创建新文件。
  • 'a':追加模式。文件存在时,在文件末尾追加内容;文件不存在时,创建新文件。
  • 'x':创建新文件并写入。如果文件已存在,则操作失败。
  • 'b':二进制模式,用于处理二进制文件,如图片、音频、视频等。例如,读取二进制文件image.jpg:
代码语言:javascript
复制
with open('image.jpg', 'rb') as file:    binary_data = file.read()
  • 't':文本模式,默认模式。处理文本文件时,Python 会根据指定的编码方式(默认是系统编码)对文件内容进行编码和解码。
  • '+':更新模式,可以同时进行读取和写入操作。例如'r+'` 表示在读取文件的同时,也可以对文件进行写入,但写入时要注意文件指针的位置,否则可能会覆盖原有内容。

处理不同编码的文件

在实际工作中,我们经常会遇到不同编码格式的文件,如 UTF - 8、GBK 等。如果不指定编码,Python 会使用系统默认编码,这可能导致读取乱码。因此,明确指定文件编码非常重要。比如读取一个 UTF - 8 编码的文件:

代码语言:javascript
复制
with open('utf8_file.txt', 'r', encoding='utf-8') as file:    content = file.read()    print(content)

如果要读取 GBK 编码的文件,只需将编码参数改为'gbk'即可:

代码语言:javascript
复制
with open('gbk_file.txt', 'r', encoding='gbk') as file:    content = file.read()    print(content)

大文件处理技巧

对于大文件,直接一次性读取显然不可取,除了前面提到的逐行读取,还可以采用分块读取的方式。比如,每次读取 1KB 的数据块:

代码语言:javascript
复制
with open('large_file.txt', 'r') as file:    while True:        chunk = file.read(1024)  # 读取1KB的数据块        if not chunk:            break        print(chunk)

这种方式可以有效控制内存占用,让程序在处理大文件时也能稳定运行。

错误处理

在文件读取过程中,可能会遇到各种错误,如文件不存在、权限不足等。为了使程序更加健壮,我们需要进行错误处理。使用try - except ceh.vcbjjdt.cn语句可以捕获并处理这些异常:

代码语言:javascript
复制
try:    with open('nonexistent.txt', 'r') as file:        content = file.read()except FileNotFoundError:    print("文件不存在")except IOError as e:    print(f"读取文件时出错: {e}")

这样,当文件不存在时,程序会打印 “文件不存在”;当发生其他 I/O 错误时,会打印具体的错误信息。

Python 导入数据的多样化方式

在数据分析、机器学习等领域,从不同数据源导入数据是第一步。Python 提供了丰富的库来支持各种数据格式的导入。

从文本文件导入数据

  1. 纯文本文件:前面介绍的读取文本文件的方法,就可以用于导入纯文本数据。如果文本文件中的数据是有规律的,比如每行是一个数据记录,我们可以进一步处理。例如,有一个文件numbers.txt,每行存储一个数字,要将这些数字读取为 Python 中的列表:
代码语言:javascript
复制
numbers = []with open('cei.zqsedu.com', 'r') as file:    for line in file:        number = int(line.strip())        numbers.append(number)print(numbers)
  1. 表格数据(Flat 文件)
    • 使用 Numpy 读取 Flat 文件:Numpy 是 Python 中用于数值计算的强大库,它可以高效地处理数组和矩阵数据。Flat 文件是一种包含没有相对关系结构记录的文件,常见的如 CSV(逗号分隔值)文件、Tab 分割符文件等。
      • 对于具有一种数据类型的文件,假设我们有一个mnist.txt文件,要跳过前两行,读取第一列和第三列的数据,可以这样做:
代码语言:javascript
复制
import numpy as npfilename ='mnist.txt'data = np.loadtxt(filename, skiprows=2, usecols=(0, 2))print(data)
  • 对于具有混合数据类型的文件,以泰坦尼克号数据集为例(文件名为titanic.csv),该文件包含表头信息,且数据类型有字符串、数字等。我们需要跳过表头,区分横纵坐标。代码如下:
代码语言:javascript
复制
import numpy as npfilename = 'cej.honganpr.com'data = np.genfromtxt(filename, delimiter=',', names=True, dtype=None)print(data)
  • 使用 Pandas 读取 Flat 文件:Pandas 是数据分析中常用的库,它对表格数据的处理能力更为强大和灵活。读取 CSV 文件时,可以指定读取的行数、列名、分隔符、注释字符、识别为缺失值的字符串等。例如,读取一个名为demo.csv的文件,只读取前 5 行,文件没有表头,分隔符是制表符,将空字符串识别为缺失值:
代码语言:javascript
复制
import pandas as pdfilename = 'cek.jiubae.com'data = pd.read_csv(filename, nrows=5, header=None, sep='\t', na_values="")print(data)

从 Excel 电子表格导入数据

Pandas 提供了便捷的方式来读取 Excel 文件。在读取之前,需要确保安装了openpyxl库(用于处理 xlsx 格式文件)。例如,有一个名为data.xlsx的 Excel 文件,要读取其中名为Sheet1的工作表数据:

代码语言:javascript
复制
import pandas as pddata = pd.read_excel('cel.czygcj.com', sheet_name='Sheet1')print(data)

如果 Excel 文件包含多个工作表,要读取所有工作表,可以使用ExcelFile类:

代码语言:javascript
复制
import pandas as pdfile = 'cem.keprinting.com'xls = pd.ExcelFile(file)sheets = {}for sheet_name in xls.sheet_names:    sheets[sheet_name] = pd.read_excel(xls, sheet_name=sheet_name)print(sheets)

从其他数据源导入数据

  1. JSON 文件:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在 Web 开发、数据传输等场景中广泛应用。Python 内置的json模块可以方便地处理 JSON 数据。例如,读取一个名为data.json的 JSON 文件:
代码语言:javascript
复制
import jsonwith open('data.json', 'r') as file:    data = json.load(file)    print(data)

如果 JSON 文件是按行存储多个 JSON 对象,需要逐行解析,可以这样做:

代码语言:javascript
复制
import jsonwith open('lines.json', 'r') as file:    for line in file:        data = json.loads(line.strip())        print(data)
  1. 数据库:Python 可以连接多种数据库,如 SQLite、MySQL、PostgreSQL 等。以 SQLite 为例,使用sqlite3模块连接数据库并查询数据:
代码语言:javascript
复制
import sqlite3conn = sqlite3.connect('example.db')cursor = conn.cursor()cursor.execute('SELECT * FROM users')rows = cursor.fetchall()for row in rows:    print(row)conn.close()

如果使用 Pandas 从 SQLite 数据库读取数据,可以结合read_sql_query函数,使数据处理更加便捷:

代码语言:javascript
复制
import pandas as pdimport sqlite3conn = sqlite3.connect('example.db')data = pd.read_sql_query('SELECT * FROM users', conn)print(data)conn.close()
  1. SAS 文件:SAS(Statistical Analysis System cen.cqxyjgs.com)是一个大型应用软件系统,用于数据分析等。要读取 SAS 文件(.sas7bdat格式),可以使用sas7bdat库:
代码语言:javascript
复制
from sas7bdat import SAS7BDATwith SAS7BDAT('demo.sas7bdat') as file:    df_sas = file.to_data_frame()print(df_sas)
  1. Stata 文件:Stata 是一款统计分析软件,其数据文件后缀名为.dta。使用 Pandas 可以直接读取 Stata 文件:
代码语言:javascript
复制
import pandas as pddata = pd.read_stata('demo.dta')print(data)
  1. Pickled 文件:Python 的pickle ceo.hfsttyn.com模块用于对象的序列化和反序列化。通过pickle模块,可以将 Python 对象(如列表、字典、类等)保存到文件中,也可以从文件中读取并还原对象。例如,读取一个名为pickled_demo.pkl的 Pickled 文件:
代码语言:javascript
复制
import picklewith open('pickled_demo.pkl', 'rb') as file:    pickled_data = pickle.load(file)print(pickled_data)
  1. HDF5 文件:HDF5 文件用于存储大规模科学数据,支持跨平台和不同类型数据的存储。使用h5py库可以处理 HDF5 文件。例如,读取一个名为data.h5的 HDF5 文件:
代码语言:javascript
复制
import h5pyfilename = 'data.h5'data = h5py.File(filename, 'r')print(data.keys())
  1. Matlab 文件:Matlab 是一款常用于科学计算和工程领域的软件,其数据文件后缀为.mat。使用scipy.io库可以读取 Matlab 文件:
代码语言:javascript
复制
import scipy.iofilename = 'cep.dnzpack.com'mat = scipy.io.loadmat(filename)print(mat)

Python 读取文件和导入数据的方法丰富多样,针对不同的文件类型和数据格式,我们可以选择最合适的工具和方法。熟练掌握这些技能,将为我们在 Python 编程的道路上,尤其是在数据分析、机器学习等领域,打下坚实的基础。无论是处理日常的文本数据,还是应对复杂的大规模数据集,都能游刃有余。希望通过今天的分享,大家能对 Python 在这方面的应用有更深入的理解和掌握。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python 读取文件的多种姿势
    • 基础操作:open 函数与 with 语句
    • 不同读取方法的适用场景
    • 文件模式的奥秘
    • 处理不同编码的文件
    • 大文件处理技巧
    • 错误处理
  • Python 导入数据的多样化方式
    • 从文本文件导入数据
    • 从 Excel 电子表格导入数据
    • 从其他数据源导入数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档