一、Python存储数据的多样方式
Python提供了多种存储数据的方法,下面将对常见的几种进行介绍:
(一)json文件存储
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它在Python中的应用十分广泛,主要优势在于能够轻松地解决编码问题。
其数据结构类似于Python中的字典和列表,这使得它非常易于读写和解析,进而能够提升网络传输效率。以下是一个简单的示例,将一个包含用户信息的字典存储为JSON文件:
import jsonuser_info = {"name": "Alice", "age": 25, "city": "New York"}with open("user_info.json", "w") as f: json.dump(user_info, f)
(二)csv文件存储
CSV(Comma - Separated Values)格式在数据存储中也很常见,Python可以很方便地将数据存储为这种格式。这种格式的文件可以使用Excel等工具打开浏览,方便查看数据。例如,将一个简单的二维列表数据存储为CSV文件:
import csvdata = [["John", 22], ["Bob", 28], ["Mary", 30]]with open("data.csv", "w", newline='') as csvfile: writer = csv.writer(csvfile) writer.writerows(data)
(三)MySQL数据库存储
MySQL数据库存储是Python数据存储中最常用的方式之一。在Python中,我们可以通过相应的库来连接MySQL数据库并进行操作。以下是一个简单的连接数据库并插入数据的示例:
import mysql.connectormydb = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="your_database")mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"val = ("John", "Highway 21")mycursor.execute(sql, val)mydb.commit()
(四)Redis数据库存储
在Python中使用Redis数据库存储数据具有方便、速度快的优点。不过需要注意的是,从Redis中取出的数据是二进制形式,通常需要转换为字符串进行操作。以下是一个简单的Python操作Redis存储数据的示例:
import redisr = redis.Redis(host='localhost', port=6379, db=0)r.set('key', 'value')data = r.get('key')# 转换为字符串data_str = data.decode()
(五)Mongdb数据库存储
使用Python将数据存储到MongoDB数据库的优点是它对数据结构的要求比较宽松。不过,从MongoDB中取出的数据往往需要通过整理脚本来处理。以下是一个简单的Python操作MongoDB存储数据的示例:
from pymongo import MongoClientclient = MongoClient("mongodb://localhost:27017/")db = client["mydatabase"]collection = db["mycollection"]data = {"name": "Tom", "age": 35}collection.insert_one(data)
二、Python数据存储到文件的方式
Python有多种将数据存储到文件的方法,下面逐一介绍:
(一)保存数据到txt
例如,通过requests获取网页源代码,用pyquery解析库解析,将爬取的内容保存到txt文件。以下是一个简化的示例:
import requestsfrom pyquery import PyQuery as pqurl = "https://example.com"response = requests.get(url)doc = pq(response.text)content = doc.text()with open("web_content.txt", "w") as f: f.write(content)
(二)保存数据到csv
在Python中,我们可以使用csv模块来操作CSV文件。创建writer对象,使用writerow()写入一行数据,writerows()写入多行数据,可写入列表或字典数据到csv文件。例如:
import csvdata_list = [["apple", 5], ["banana", 3], ["orange", 4]]with open("fruits.csv", "w", newline='') as csvfile: writer = csv.writer(csvfile) writer.writerows(data_list)
(三)使用pandas保存数据
Pandas是一个强大的数据分析库,它支持多种文件格式的读写。我们可以将爬取的数据储存为DataFrame对象,然后方便地保存到excel、csv文件等。例如:
import pandas as pddata = {"col1": [1, 2, 3], "col2": ["a", "b", "c"]}df = pd.DataFrame(data)df.to_csv("data_pandas.csv", index=False)
三、Python存储数据之TXT、JSON、CSV和数据库格式
(一)TXT格式存储
以保存知乎热门话题到txt文件为例,通过requests获取网页源代码,用pyquery解析,使用open()打开文件,write()写入内容:
import requestsfrom pyquery import PyQuery as pqurl = "https://www.zhihu.com/billboard"response = requests.get(url)doc = pq(response.text)topics = doc('.HotList-itemTitle').text()with open("zhihu_topics.txt", "w") as f: f.write(topics)
(二)JSON格式存储
在JSON数据存储中,以数组和对象形式进行操作。使用load(), dumps()将json文件字符互相转化为json对象,可设置缩进。例如:
import jsondata = [{"name": "Peter", "age": 30}, {"name": "Lily", "age": 28}]# 将数据转换为JSON字符串并写入文件with open("data.json", "w") as f: json_str = json.dumps(data, indent=4) f.write(json_str)# 从文件中读取JSON字符串并转换为对象with open("data.json", "r") as f: loaded_data = json.load(f)
(三)CSV格式存储
使用csv.writer()初始化写入对象,writerow()写入一行数据,可将数据写入到excel中。例如:
import csvheader = ["Name", "Score"]data = [["Tom", 90], ["Jerry", 85]]with open("scores.csv", "w", newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(header) writer.writerows(data)
(四)数据库存储
以mysql为例,连接数据库、创建数据库、执行插入语句等操作来存储数据到关系型数据库:
import mysql.connector# 连接数据库mydb = mysql.connector.connect( host="localhost", user="your_username", password="your_password")mycursor = mydb.cursor()# 创建数据库mycursor.execute("CREATE DATABASE IF NOT EXISTS mydb")mydb.database = "mdb"# 创建表并插入数据mycursor.execute("CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")sql = "INSERT INTO students (name, age) VALUES (%s, %s)"val = ("David", 23)mycursor.execute(sql, val)mydb.commit()
四、Python存储和读取用户生成数据
(一)保存用户生成数据
使用json.dump()可以存储用户输入的名字等数据到文件中。以下是一个示例:
import jsonusername = input("Please enter your name: ")with open("user_name.json", "w") as f: json.dump(username, f)
(二)读取用户生成数据
使用json.load()读取存储在文件中的用户生成数据,并进行相应的输出和处理。例如:
import jsontry:with open("user_name.json", "r") as f: username = json.load(f) print(f"Welcome back, {username}!")except FileNotFoundError: print("No user name found.")
(三)重构存储和读取用户生成数据的程序
通过重构代码,将存储和读取用户生成数据的功能划分为多个函数,使代码更清晰、易于理解和扩展。例如:
import jsondefsave_username(username):with open("user_name.json", "w") as f: json.dump(username, f)defload_username():try:with open("user_name.json", "r") as f:return json.load(f)except FileNotFoundError:returnNoneif __name__ == "__main__": username = input("Please enter your name: ") save_username(username) loaded_username = load_username()if loaded_username: print(f"Welcome back, {loaded_username}!")else: print("No user name found.")
五、总结
Python在数据存储方面有着丰富的方法和广泛的应用场景。从简单的文件存储如TXT、CSV、JSON,到强大的数据库存储如MySQL、Redis、MongoDB等,这些存储方式在不同的领域都发挥着重要作用。
总之,Python在数据存储方面的重要性将日益凸显,它将继续作为数据处理和程序开发中的重要工具,为各类应用提供强大的支持。