首页 > 其他分享 >在字符串的 格式化 与 反格式化 中用到的 模块 和 方法

在字符串的 格式化 与 反格式化 中用到的 模块 和 方法

时间:2024-07-17 20:29:09浏览次数:17  
标签:格式化 os Python data 用到 json 模块 序列化 pickle

目录

一,Open函数使用

二,Json与pickle

一,json模块

1. 将 Python 对象转换为 JSON 字符串

2. 将 JSON 字符串解析为 Python 对象

3. 读取和写入 JSON 文件

4. 处理 JSON 中的特殊数据类型

5. 错误处理

二,pikel模块

1. 序列化 Python 对象

2. 反序列化 Python 对象

3. 处理自定义对象的序列化和反序列化

4. 使用 pickle.dumps() 和 pickle.loads()

5. 注意事项

三,Os模块的常见用法

1. 获取当前工作目录

2. 切换工作目录

3. 列出目录中的文件和子目录

4. 创建目录

5. 删除目录

6. 删除文件

7. 执行系统命令

8. 获取环境变量

9. 执行文件和目录操作的更多方法

10. 获取操作系统相关信息


一,Open函数使用

open函数的使用是用于打开一个文件,并返回文件对象。

打开文件后,可以通过文件对象进行读取、写入、关闭等操作。常用的文件对象方法有:

  • read(): 读取文件内容。
  • write(s): 写入字符串s到文件。
  • close(): 关闭文件。

示例代码:

# 以只读模式打开文件
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

# 以写入模式打开文件
file = open('example.txt', 'w')
file.write('Hello, world!')
file.close()

在使用open函数打开文件后,最好使用with open语句来自动关闭文件,避免忘记手动关闭文件造成资源浪费。示例代码:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

二,Json与pickle

json 模块是 Python 标准库中用于处理 JSON 格式数据的模块。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。

一,json模块

以下是 json 模块的一些常见用法:

1. 将 Python 对象转换为 JSON 字符串

使用 json.dumps() 方法可以将 Python 对象(字典、列表等)转换为 JSON 格式的字符串。

import json

data = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

json_string = json.dumps(data)
print(json_string)

输出:

{"name": "John", "age": 30, "city": "New York"}

2. 将 JSON 字符串解析为 Python 对象

使用 json.loads() 方法可以将 JSON 格式的字符串解析为 Python 对象(字典、列表等)。

json_string = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data['name'])
print(data['age'])
print(data['city'])

输出:

John
30
New York

3. 读取和写入 JSON 文件

可以使用 json.dump() 将 Python 对象直接写入 JSON 文件,以及使用 json.load() 从 JSON 文件读取数据。

写入 JSON 文件示例:

data = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

with open('data.json', 'w') as f:
    json.dump(data, f)

读取 JSON 文件示例:

with open('data.json', 'r') as f:
    data = json.load(f)
    print(data)

4. 处理 JSON 中的特殊数据类型

JSON 支持的数据类型包括字符串、数字、布尔值、数组、对象(字典)以及 null 值。json 模块可以处理 Python 中的大部分数据类型,并在序列化为 JSON 字符串时自动转换为适当的 JSON 格式。

例如,处理日期时间对象时,可以使用 default 参数来自定义序列化过程。

import json
from datetime import datetime

data = {
    'name': 'John',
    'age': 30,
    'timestamp': datetime.now()
}

# 自定义处理日期时间对象
def datetime_handler(x):
    if isinstance(x, datetime):
        return x.isoformat()

json_string = json.dumps(data, default=datetime_handler)
print(json_string)

5. 错误处理

在处理 JSON 数据时,可能会遇到不符合 JSON 格式的字符串,例如格式错误的 JSON 字符串。可以使用 json.JSONDecodeError 来捕获解析错误。

json_string = '{"name": "John", "age": 30, "city": "New York"'
try:
    data = json.loads(json_string)
    print(data)
except json.JSONDecodeError as e:
    print(f"JSON decode error: {e}")

这些是 json 模块的一些常见用法。它在处理数据序列化、反序列化以及文件操作时非常有用,是处理跨平台数据交换的重要工具之一。

二,pikel模块

pickle 模块是 Python 的标准库之一,用于序列化和反序列化 Python 对象。它能够将 Python 对象转换为字节流(即序列化),并且可以从字节流重新构建出原始的 Python 对象(即反序列化)。pickle 模块的主要特点是可以处理几乎所有的 Python 对象,包括自定义的类实例、函数、内置对象等。

以下是 pickle 模块的常见用法示例:

1. 序列化 Python 对象

使用 pickle.dump() 方法将 Python 对象序列化为字节流,并将其写入文件中。

import pickle

data = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

# 序列化对象并写入文件
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)

2. 反序列化 Python 对象

使用 pickle.load() 方法从文件中读取字节流并反序列化为 Python 对象。

import pickle

# 从文件中读取并反序列化对象
with open('data.pickle', 'rb') as f:
    data = pickle.load(f)
    print(data)

3. 处理自定义对象的序列化和反序列化

pickle 模块可以序列化和反序列化自定义的 Python 类的实例。只要对象是 Python 可序列化的,就可以通过 pickle 来处理。

import pickle

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person('Alice', 25)

# 序列化自定义对象
with open('person.pickle', 'wb') as f:
    pickle.dump(person, f)

# 反序列化对象
with open('person.pickle', 'rb') as f:
    loaded_person = pickle.load(f)
    print(loaded_person.name)
    print(loaded_person.age)

4. 使用 pickle.dumps() 和 pickle.loads()

除了直接操作文件外,还可以使用 pickle.dumps() 将对象序列化为字节流(而不是写入文件),并使用 pickle.loads() 将字节流反序列化为对象。

import pickle

data = {
    'name': 'John',
    'age': 30,
    'city': 'New York'
}

# 将对象序列化为字节流
serialized_data = pickle.dumps(data)

# 反序列化字节流为对象
deserialized_data = pickle.loads(serialized_data)
print(deserialized_data)

5. 注意事项

  • 跨 Python 版本兼容性问题pickle 生成的序列化数据依赖于 Python 版本,不同 Python 版本之间的兼容性可能存在问题,因此在存储或传输 pickle 数据时要注意。
  • 安全性:反序列化 pickle 数据存在安全风险,因为恶意构造的 pickle 数据可能会执行任意代码。因此,不要从不受信任的源加载 pickle 数据。

总结来说,pickle 模块是 Python 中方便的对象持久化和数据交换工具,特别适用于在同一版本的 Python 环境中快速地序列化和反序列化对象。

三,Os模块的常见用法

os 模块是 Python 的标准库之一,提供了许多与操作系统交互的函数。它允许你执行文件和目录操作,管理进程,处理环境变量等

1. 获取当前工作目录

import os

current_dir = os.getcwd()
print("Current working directory:", current_dir)

2. 切换工作目录

import os

os.chdir('/path/to/new/directory')
print("Current working directory after change:", os.getcwd())

3. 列出目录中的文件和子目录

import os

files_and_dirs = os.listdir('/path/to/directory')
print("Files and directories:", files_and_dirs)

4. 创建目录

import os

os.makedirs('/path/to/new/directory', exist_ok=True)

5. 删除目录

import os

os.rmdir('/path/to/empty/directory')

6. 删除文件

import os

os.remove('/path/to/file.txt')

7. 执行系统命令

import os

os.system('ls -l')

8. 获取环境变量

import os

python_path = os.getenv('PYTHONPATH')
print("PYTHONPATH:", python_path)

9. 执行文件和目录操作的更多方法

  • os.path 模块提供了一些用于操作路径的有用函数,如 os.path.join()os.path.exists()os.path.isdir()os.path.isfile() 等。

10. 获取操作系统相关信息

import os

print("Operating system:", os.name)
print("Parent process ID:", os.getppid())
print("Process ID:", os.getpid())

标签:格式化,os,Python,data,用到,json,模块,序列化,pickle
From: https://blog.csdn.net/2401_86120670/article/details/140504308

相关文章

  • TS 入门(七):TypeScript模块与命名空间
    目录前言回顾泛型编程1.模块a.导入和导出b.默认导出c.重命名导入和导出2.命名空间a.定义命名空间b.嵌套命名空间3.动态导入与条件导入a.动态导入b.条件导入结语前言在前几章中,我们学习了TypeScript的基础知识、函数与对象类型、接口与类、以及泛型编......
  • Sqlmap中文使用手册 - Injection模块参数使用
    目录1.Injection模块的帮助文档2.各个参数的介绍2.1指定测试参数2.2--dbms=DBMS2.3--os=OS2.4--invalid-bignum2.5--invalid-logical2.6--invalid-string2.7--no-escape2.8--prefix/--suffix2.9--tamper=TAMPER1.Injection模块的帮助文档Injection:......
  • 7、nginx-日志模块的格式-log_format main、access.log(访问服务器记录的日志)
    日志模块的名称:ngx_http_log_module路径:vim/etc/nginx/nginx.conf相关指令:·日志格式:log_format---nginx有非常灵活的日志模式,每个级别的配置可以有各自独立的访问日志、日志格式通过log_format命令定义··语法Syntax:log_formatname[escape=default|json]......
  • Qt - QtWebEngineWidgets模块
    1、QtWebEngineWidgets模块 #include<QtWebEngineWidgets>QT+=webenginewidgets 1.1QWebEnginePage示例代码:#include<QtWebEngineWidgets>#include<QWebEnginePage>//1、创建一个新的QWebEnginePage实例:page=newQWebEnginePage(this);......
  • 中科微电子ATGM336H GPS定位模块STM32应用
    文章目录前言1.中科微电子ATGM336H的使用1.1ATGM336H引脚说明1.2数据帧介绍1.3经纬度介绍1.4ATGM336H的启动方式2数据处理前置C语言知识2.1strstr函数2.2memset函数2.3memcpy函数2.4strtod函数3.开始移植3.1usart初始化程序3.2串口中断接收函数3.4数据帧......
  • 多种模块格式,包括 ES, CommonJS, UMD, AMD, SystemJS 和 IIFE的区别点分别是什么
    【转】https://zhuanlan.zhihu.com/p/668530823以下是各种模块格式的主要特点:ESModules(ESM):这是ECMAScript6(ES6)引入的官方标准格式。它支持导入和导出语句,以及静态分析和tree-shaking。它是唯一的静态模块系统,意味着你可以在编译时确定导入和导出的内容。CommonJS(C......
  • Pybind11和CMake构建python扩展模块环境搭建
    使用pybind11的CMake模板来创建拓展环境搭建从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本拉取pybind11使用cmake构建工具的模板仓库gitclone--recursivehttps://github.com/mrchipset/cmake_example.git切换分支gitcheckout-bdev升级s......
  • 多人合作使用项目使用子模块替代merge繁琐合并
    问:我的main分支的b文件夹只想放b分支的b文件夹里的文件,并且希望b分支更改后我这边也自动更新,请问怎么是实现你希望 main 分支中的 b 文件夹自动保持与 b 分支中的 b 文件夹同步。可以使用子模块(submodule)来实现这种效果。这种方法允许你在一个仓库中包含另一个仓库,并且......
  • 移动硬盘提示未格式化维修数据恢复
    当移动硬盘提示未格式化时,通常意味着操作系统无法正确识别或访问硬盘上的文件系统。这可能是由于多种原因引起的,包括文件系统损坏、硬盘物理损坏、分区表错误等。一、原因分析文件系统损坏:文件系统是硬盘上组织和存储数据的关键结构,如果受到病毒攻击、非法操作或系统崩溃等因素......
  • 硬盘数据恢复不认异响摔伤开盘恢复误删除格式化
    硬盘数据恢复是一个复杂且需要专业技术的过程,涉及到多种情况和不同的恢复方法。一、硬盘不认盘原因:硬盘不认盘可能是由于硬件故障、连接问题或系统识别错误等原因导致。解决方法:检查硬盘与电脑之间的连接是否稳固,包括数据线和电源线。尝试将硬盘连接到另一台电脑上,看是否能被......