青少年编程与数学 02-008 Pyhon语言编程基础 25课题、文件操作

青少年编程与数学 02-008 Pyhon语言编程基础 25课题、文件操作

  • 一、文件操作
  • 二、文本文件
      • 读取文本文件
      • 写入文本文件
      • 追加文本到文件
      • 修改文本文件
      • 复制文本文件
      • 文件编码
      • 错误处理
  • 三、JSON文件
      • 读取JSON文件
      • 写入JSON文件
      • 修改JSON文件
      • 处理大型JSON文件
      • 错误处理
  • 四、练习
      • 1. 将JSON文件导入到数据库
      • 2. 从数据库导出到JSON文件

课题摘要:本文介绍了Python中的基本文件操作,包括创建、读取、写入、追加、修改、删除、重命名、复制和移动文件。通过内置的open函数实现文件操作,支持不同模式如只读、写入、追加等。文本文件操作包括读取、写入、追加和复制文件,考虑文件编码和错误处理。JSON文件操作涉及使用json模块读取、写入和修改JSON数据。文章提供了将JSON文件导入PostgreSQL数据库和从数据库导出到JSON文件的示例代码,强调了替换数据库连接参数和调整文件路径的重要性。这些操作是编程中常见的任务,允许程序存储和检索数据。


一、文件操作

文件操作是指计算机程序对文件进行的各种操作,这些操作包括但不限于创建、读取、写入、修改和删除文件。在编程中,文件操作是常见的任务,因为它们允许程序存储和检索数据。以下是一些基本的文件操作

  1. 创建文件(Create)

    • 创建一个新文件。如果文件已存在,则可能会被覆盖或引发错误。
  2. 读取文件(Read)

    • 从文件中读取数据。这可以是读取整个文件的内容,也可以是逐行或逐块读取。
  3. 写入文件(Write)

    • 向文件中写入数据。如果文件不存在,通常会创建一个新文件;如果文件已存在,可能会追加到文件末尾或覆盖现有内容。
  4. 追加文件(Append)

    • 向现有文件的末尾添加数据,而不是覆盖它。
  5. 修改文件(Modify)

    • 更改文件中的数据。这可能涉及到读取文件内容、修改数据然后写回文件。
  6. 删除文件(Delete)

    • 从文件系统中删除文件。
  7. 重命名文件(Rename)

    • 更改文件的名称。
  8. 复制文件(Copy)

    • 创建文件的副本。
  9. 移动文件(Move)

    • 将文件从一个位置移动到另一个位置。
  10. 文件属性(Attributes)

    • 获取或设置文件的属性,如大小、创建日期、修改日期等。

在Python中,文件操作通常是通过内置的open函数实现的,它允许你指定文件模式(如只读、写入、追加等)。以下是一个简单的Python文件操作示例:

python"># 打开文件
with open('example.txt', 'w') as file:
    file.write('Hello, world!')

# 读取文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# 追加到文件
with open('example.txt', 'a') as file:
    file.write('\nThis is a new line.')

# 读取并修改文件
with open('example.txt', 'r') as file:
    lines = file.readlines()

with open('example.txt', 'w') as file:
    for line in lines:
        file.write(line.replace('new', 'NEW'))

# 删除文件
import os
os.remove('example.txt')

在上述示例中,我们使用了with语句来确保文件在操作完成后正确关闭。这是一种推荐的实践,因为它可以自动管理文件的打开和关闭,即使在发生异常时也是如此。

二、文本文件

在Python中操作文本文件,你可以使用内置的open函数来打开文件,然后使用文件对象的方法来读取、写入、追加或修改文件内容。以下是一些基本的文本文件操作示例:

读取文本文件

python"># 读取整个文件内容
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# 逐行读取文件
with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 使用strip()去除每行末尾的换行符

写入文本文件

python"># 写入文本到文件
with open('example.txt', 'w') as file:
    file.write('Hello, world!\n')

# 写入多行文本到文件
lines = ['First line.', 'Second line.', 'Third line.']
with open('example.txt', 'w') as file:
    file.writelines('%s\n' % line for line in lines)

追加文本到文件

python"># 追加文本到文件末尾
with open('example.txt', 'a') as file:
    file.write('This is a new line.\n')

修改文本文件

python"># 读取文件内容,修改后写回文件
with open('example.txt', 'r') as file:
    lines = file.readlines()

# 修改内容,例如,将所有'e'替换为'3'
with open('example.txt', 'w') as file:
    file.writelines(''.join(line.replace('e', '3') for line in lines))

复制文本文件

python"># 复制文件内容到新文件
with open('example.txt', 'r') as src:
    with open('copy_of_example.txt', 'w') as dst:
        dst.write(src.read())

文件编码

当处理文本文件时,特别是那些可能包含非ASCII字符的文件时,你需要考虑文件的编码。Python 3默认使用UTF-8编码,但你可以通过指定encoding参数来处理其他编码的文件。

python"># 以UTF-8编码读取文件
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

错误处理

文件操作中,可能会遇到各种错误,如文件不存在、权限问题等。你可以使用try...except块来捕获和处理这些异常。

python">try:
    with open('example.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print("文件未找到。")
except PermissionError:
    print("没有权限读取文件。")
except Exception as e:
    print(f"发生错误:{e}")

这些是Python中操作文本文件的基本方法。根据你的具体需求,你可能需要组合使用这些方法来完成复杂的文件操作任务。

三、JSON文件

在Python中操作JSON文件通常涉及到两个步骤:首先是读取JSON文件,然后是将数据写入JSON文件。Python的json模块提供了dumpdumps方法用于将Python对象转换为JSON格式,以及loadloads方法用于将JSON格式的数据转换为Python对象。

以下是一些基本的操作JSON文件的示例:

读取JSON文件

python">import json

# 从文件中读取JSON数据
with open('data.json', 'r', encoding='utf-8') as file:
    data = json.load(file)
    print(data)

写入JSON文件

python">import json

# 将Python对象写入JSON文件
data = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

with open('data.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

在这个例子中,ensure_ascii=False允许输出非ASCII字符,而indent=4参数美化了输出,使其更易于阅读。

修改JSON文件

要修改JSON文件,你通常会读取文件内容,修改Python对象,然后将修改后的对象写回文件。

python">import json

# 读取JSON数据
with open('data.json', 'r', encoding='utf-8') as file:
    data = json.load(file)

# 修改数据
data['age'] = 31

# 将修改后的数据写回文件
with open('data.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

处理大型JSON文件

如果你需要处理大型JSON文件,可以使用ijson库来逐个处理文件中的对象,而不是一次性将整个文件加载到内存中。

错误处理

在处理JSON文件时,可能会遇到格式错误或其他异常。你可以使用try...except块来捕获和处理这些异常。

python">import json

try:
    with open('data.json', 'r', encoding='utf-8') as file:
        data = json.load(file)
except json.JSONDecodeError:
    print("JSON文件格式错误。")
except FileNotFoundError:
    print("文件未找到。")
except Exception as e:
    print(f"发生错误:{e}")

这些是Python中操作JSON文件的基本方法。根据你的具体需求,你可能需要调整这些代码来适应不同的场景。

四、练习

下面是一个简单的Python示例,展示了如何将JSON文件中的图书记录导入到PostgreSQL数据库中,以及如何从数据库中导出记录到JSON文件。这个示例假设你已经有一个PostgreSQL数据库和一个名为books的表,表结构如下:

CREATE TABLE books (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(255) NOT NULL,
    published_year INT,
    isbn VARCHAR(13),
    genre VARCHAR(100)
);

1. 将JSON文件导入到数据库

python">import json
import psycopg2

# JSON文件路径
json_file_path = 'books.json'

# PostgreSQL数据库连接参数
conn_params = {
    'dbname': 'personal_library_db',
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_host',
    'port': '5432'
}

# 读取JSON文件并导入数据到数据库
def import_json_to_db(json_file_path, conn_params):
    with open(json_file_path, 'r', encoding='utf-8') as file:
        books = json.load(file)
        
    conn = psycopg2.connect(**conn_params)
    cursor = conn.cursor()
    
    for book in books:
        cursor.execute("""
            INSERT INTO books (title, author, published_year, isbn, genre)
            VALUES (%s, %s, %s, %s, %s);
        """, (book['title'], book['author'], book['published_year'], book['isbn'], book['genre']))
    
    conn.commit()
    cursor.close()
    conn.close()

# 调用函数
import_json_to_db(json_file_path, conn_params)

2. 从数据库导出到JSON文件

python">import json
import psycopg2

# PostgreSQL数据库连接参数
conn_params = {
    'dbname': 'personal_library_db',
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_host',
    'port': '5432'
}

# 从数据库导出数据到JSON文件
def export_db_to_json(conn_params, json_file_path):
    conn = psycopg2.connect(**conn_params)
    cursor = conn.cursor()
    
    cursor.execute("SELECT * FROM books;")
    books = cursor.fetchall()
    
    # 将查询结果转换为字典列表
    books_data = []
    for book in books:
        books_data.append({
            'id': book[0],
            'title': book[1],
            'author': book[2],
            'published_year': book[3],
            'isbn': book[4],
            'genre': book[5]
        })
    
    with open(json_file_path, 'w', encoding='utf-8') as file:
        json.dump(books_data, file, ensure_ascii=False, indent=4)
    
    cursor.close()
    conn.close()

# JSON文件路径
json_file_path = 'exported_books.json'

# 调用函数
export_db_to_json(conn_params, json_file_path)

在这个示例中,我们首先定义了两个函数:import_json_to_dbexport_db_to_json。第一个函数从指定的JSON文件中读取图书数据,并将其插入到数据库中。第二个函数从数据库中查询所有图书数据,并将它们保存到指定的JSON文件中。

请确保替换conn_params中的数据库连接参数为你的实际信息,并根据你的实际情况调整JSON文件路径和表结构。此外,这个示例没有包含错误处理和输入验证,这些在实际应用中是非常重要的。


http://www.niftyadmin.cn/n/5845471.html

相关文章

绿虫光伏仿真设计软件基于Unity3D引擎的革命性突破

绿虫光伏仿真设计软件凭借其技术突破与功能创新,正在重塑光伏电站设计领域的行业范式。以下从技术架构、功能创新及行业价值三个维度深度解析其核心竞争力: 一、颠覆性技术架构 1、游戏引擎赋能工业软件 采用Unity3D引擎构建底层架构,实现影…

第7章《VTK与OPenGL集成》

VTK 本身基于 OpenGL 进行渲染,但如果想要在 VTK 场景中结合 OpenGL 进行底层渲染(如自定义 Shader、直接绘制 OpenGL 图元等),可以通过 VTK 的 OpenGL 接口 实现。这一部分主要讲解 VTK 如何与 OpenGL 交互,包括 使用 OpenGL 直接绘制图形、自定义着色器(Shader)、Fram…

Redis双写一致性(数据库与redis数据一致性)

一 什么是双写一致性? 当修改了数据库(MySQL)中的数据,也要同时更新缓存(redis)中的数据,缓存中的数据要和数据库中的数据保持一致 双写一致性,根据业务对时间上的要求,…

如何获取sql数据中时间的月份、年份(类型为date)

可用自带的函数month来实现 如: 创建表及插入数据: create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份: select MONTH(begindate)…

初窥强大,AI识别技术实现图像转文字(OCR技术)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作,主要擅长领域有:python…

Vue中el-table定义单元格底色的几种方式

1. 使用 row-class-name 属性 这种方式可以为整行设置样式类&#xff1a; <template><el-table :data"tableData" :row-class-name"tableRowClassName"><!-- 表格列定义 --></el-table> </template><script> export…

计算机网络笔记再战——理解几个经典的协议6——TCP与UDP

目录 先说端口号 TCP 使用序号保证顺序性和应答来保证有效性 超时重传机制 TCP窗口机制 UDP 路由协议 协议分类&#xff1a;IGP和EGP 几个经典的路由算法 RIP OSPF 链路状态数据库&#xff08;LSDB&#xff09; LSA&#xff08;Link State Advertisement&#xff0…

全网多平台媒体内容解析工具使用指南

一、工具特性概述 近期体验了一款基于Web端的多媒体解析服务&#xff0c;该平台通过技术创新实现跨平台内容解析功能&#xff0c;主要特点如下&#xff1a; 1.1 跨平台支持 兼容主流社交媒体&#xff1a;Bilibili、YouTube、Twitter、Instagram等 支持短视频平台&#xff1a…