Python文件操作和异常处理:高效处理数据的利器

在这里插入图片描述

文章目录

    • 一、引言
      • 1.1 文件操作和异常处理对于编程的重要性
      • 1.2 Python作为实现文件操作和异常处理的强大工具
    • 二、为什么学习文件操作和异常处理
      • 2.1 处理各种文件格式:从文本到图像到音频等
      • 2.2 确保代码的鲁棒性:有效处理异常情况
    • 三、文件读取和写入
      • 3.1 打开文件:如何打开文件并读取其中的内容
      • 3.2 写入文件:如何将数据写入文件
      • 3.3 关闭文件:如何关闭文件和处理异常情况
    • 四、文件操作和路径处理
      • 4.1 文件和文件夹的基本操作:创建、删除、移动、复制等
      • 4.2 路径的表示和处理:绝对路径和相对路径、os模块的应用
    • 五、异常处理和调试
      • 5.1 异常的基本概念和分类:语法错误、运行时错误、逻辑错误等
      • 5.2 try-except语句:捕获和处理异常情况
      • 5.3 调试技巧:print语句、断点调试、日志记录等
    • 六、CSV和JSON文件的读写
      • 6.1 CSV文件的读写:csv模块的应用
      • 6.2 JSON文件的读写:json模块的应用
    • 七、实践项目:用Python GUI程序实现一个计算器

重温Python,适合新手搭建知识体系,也适合大佬的温故知新~

一、引言

1.1 文件操作和异常处理对于编程的重要性

文件操作和异常处理对于编程非常重要。它们使得我们能够处理文件数据、持久化数据、导入和导出数据,并且能够优雅地处理和解决错误,提高程序的可靠性和稳定性。

  1. 文件操作
    • 数据的读取和写入:文件操作允许我们从文件中读取数据或将数据写入文件。这对于处理大量数据、配置文件、日志记录等非常重要。
    • 数据持久化:通过文件操作,我们可以将数据存储在文件中,以便在程序关闭后仍然可以访问和使用这些数据。
    • 数据的导入和导出:文件操作使得我们可以将数据从一个程序导出,并在另一个程序中导入使用,实现数据共享和交互。
  2. 异常处理
    • 错误处理:异常处理机制允许我们在程序运行过程中检测和处理错误。当程序遇到错误时,异常处理可以帮助我们优雅地处理错误,而不是直接崩溃。
    • 异常信息:异常处理提供了有关错误发生位置和类型的详细信息,这有助于我们快速定位和解决问题。
    • 容错能力:通过适当的异常处理,我们可以编写更健壮的代码,增强程序的容错能力,减少意外错误对程序的影响。

1.2 Python作为实现文件操作和异常处理的强大工具

Python作为一种编程语言,在文件操作和异常处理方面具有许多强大的特性和优势。它提供了简洁的语法、内置函数和方法、上下文管理器等便捷的文件操作功能,并且通过异常处理机制,使得捕获和处理错误变得简单而灵活。

  1. 文件操作
    • 简洁的语法:Python提供了简洁而直观的语法,使得文件的读取和写入操作变得非常容易。
    • 内置函数和方法:Python内置了丰富的文件操作函数和方法,如open()、read()、write()、close()等,可以轻松地进行文件的打开、读取、写入和关闭操作。
    • 上下文管理器(Context Manager):Python的with语句结合上下文管理器可以自动管理文件的打开和关闭,避免了手动处理文件关闭的麻烦。
    • 丰富的文件处理模块:Python还提供了许多文件处理相关的模块,如os、shutil、glob等,提供了更多便捷的文件操作功能。
  2. 异常处理
    • 异常类和内置异常:Python提供了丰富的异常类和内置异常,可以用于捕获各种不同类型的错误。
    • try-except语句:Python的try-except语句使得捕获和处理异常变得非常简单。我们可以将可能引发异常的代码放在try块中,然后通过except块捕获并处理异常。
    • 多重异常捕获:Python允许我们在一个try块中捕获多个不同类型的异常,可以根据需要对不同类型的异常进行不同的处理。
    • 最终处理(finally):Python的try-except语句还允许使用finally块,无论是否发生异常,其中的代码都会被执行。这可以用于确保资源的释放和清理工作。

二、为什么学习文件操作和异常处理

2.1 处理各种文件格式:从文本到图像到音频等

Python提供了丰富的库和模块,可以处理各种文件格式,包括文本、图像、音频等。

在不同文件格式处理方面的应用

  1. 文本文件处理
    • 内置函数和方法:Python内置了处理文本文件的函数和方法,如open()、read()、write()等,可以用于打开、读取和写入文本文件。
    • csv模块:csv模块提供了对逗号分隔或其他分隔符分隔的文本数据进行读写的功能。它可以轻松地处理CSV格式的数据。
    • json模块:json模块提供了将数据编码为JSON格式或解码JSON数据的功能。它可以用于读取和写入JSON格式的文件。
  2. 图像文件处理
    • PIL/Pillow库:PIL(Python Imaging Library)是一个流行的库,而PillowPIL的一个分支。它们提供了处理图像文件的功能,如打开、缩放、裁剪、保存图像等。
    • OpenCV库:OpenCV是一个计算机视觉库,可以用于处理图像和视频。它提供了用于读取、编辑和保存各种图像格式的功能。
  3. 音频文件处理
    • pydub库:pydub库是一个简单易用的音频处理库,可以用于读取、剪切、合并和转换音频文件。它支持多种常见的音频格式。
    • librosa库:librosa是一个专门用于音频和音乐信号处理的库。它提供了各种功能,如读取音频文件、提取特征、频谱分析等。

除了上述库和模块,Python还有许多其他用于处理不同文件格式的库和工具,如numpy、scipy、matplotlib等,在科学计算、数据分析和可视化方面非常有用。

2.2 确保代码的鲁棒性:有效处理异常情况

确保代码的鲁棒性是编程中非常重要的一部分,因为代码可能会面临各种不同的异常情况。Python提供了异常处理机制,可以有效地处理异常情况,避免程序因异常而崩溃或产生未预期的结果。

Python中确保代码鲁棒性的技巧

  1. 使用try-except语句:try-except语句是Python中处理异常的主要方式。我们可以将可能引发异常的代码放在try块中,在发生异常时捕获并处理它们。
try:
    # 可能引发异常的代码
except Exception as e:
    # 处理异常的代码
  1. 捕获特定类型的异常:在try-except语句中,我们可以通过指定异常类型来捕获特定类型的异常。这可以使我们根据不同类型的异常进行不同的处理。
try:
    # 可能引发异常的代码
except ValueError as ve:
    # 处理值错误异常的代码
except IndexError as ie:
    # 处理索引错误异常的代码
  1. finally块:finally块是一个可选的代码块,它始终在try-except语句执行完毕后被执行,无论是否发生异常。通常用于清理操作,如关闭文件或数据库连接等。
try:
    # 可能引发异常的代码
except Exception as e:
    # 处理异常的代码
finally:
    # 清理操作的代码
  1. 自定义异常:除了Python内置的异常类型外,我们还可以创建自定义异常类型,以便更好地表示特定的异常情况。我们可以通过继承Exception类来创建自定义异常类型。
class CustomError(Exception):
    pass

try:
    if some_condition:
        raise CustomError("自定义错误")
except CustomError as ce:
    # 处理自定义异常的代码

三、文件读取和写入

3.1 打开文件:如何打开文件并读取其中的内容

在Python中,可以使用内置的open()函数来打开文件并读取其中的内容。

# 打开文件
file = open('example.txt', 'r')  # 'example.txt' 是文件的路径,'r' 表示以只读模式打开文件

# 读取文件内容
content = file.read()
print(content)

# 关闭文件
file.close()

ps:在读取完文件内容后,应该使用close()方法关闭文件,以释放系统资源。

此外,还有其他一些open()函数的参数可以用于不同的需求:

  • mode:打开文件的模式。

    • 'r':只读模式(默认)。
    • 'w':写入模式。如果文件不存在,则创建一个新文件;如果文件已存在,则清空文件内容。
    • 'a':追加模式。如果文件不存在,则创建一个新文件;如果文件已存在,则在文件末尾追加内容。
    • 'x':独占创建模式。仅在文件不存在时创建新文件,如果文件已存在则引发异常。
  • encoding:文件编码方式。例如,'utf-8'表示使用UTF-8编码方式(默认值)。

  • newline:文本文件的换行符。可以设置为None以使用系统默认的换行符。

除了使用read()方法一次性读取整个文件内容,还可以使用其他方法来逐行或逐块地读取文件内容,如readline()readlines()等。这些方法根据实际需求选择使用。

3.2 写入文件:如何将数据写入文件

在Python中,可以使用内置的open()函数来打开文件并将数据写入文件中。

# 打开文件
file = open('example.txt', 'w')  # 'example.txt' 是文件的路径,'w' 表示以写入模式打开文件

# 写入数据
file.write('Hello, world!\n')
file.write('This is an example file.\n')

# 关闭文件
file.close()

ps:在写入完数据后,应该使用close()方法关闭文件,以释放系统资源。另外,如果要写入二进制数据,则需要使用wb模式打开文件。

  • 此外,还有其他一些open()函数的参数可以用于不同的需求:

    • mode:打开文件的模式。

      • 'r':只读模式(默认)。
      • 'w':写入模式。如果文件不存在,则创建一个新文件;如果文件已存在,则清空文件内容。
      • 'a':追加模式。如果文件不存在,则创建一个新文件;如果文件已存在,则在文件末尾追加内容。
      • 'x':独占创建模式。仅在文件不存在时创建新文件,如果文件已存在则引发异常。
    • encoding:文件编码方式。例如,'utf-8'表示使用UTF-8编码方式(默认值)。

    • newline:文本文件的换行符。可以设置为None以使用系统默认的换行符。

除了使用write()方法一次性写入整个字符串,还可以使用其他方法来逐行或逐块地写入文件内容,如writelines()等。这些方法根据实际需求选择使用。

3.3 关闭文件:如何关闭文件和处理异常情况

在Python中,使用open()函数打开文件后,应该使用close()方法关闭文件,以释放系统资源。

# 打开文件
file = open('example.txt', 'r')

try:
    # 读取文件内容
    content = file.read()
    print(content)
finally:
    # 关闭文件
    file.close()

在打开文件时出现异常,则应该使用tryexcept语句来处理异常情况。

try:
    # 打开文件
    file = open('example.txt', 'r')
    
    try:
        # 读取文件内容
        content = file.read()
        print(content)
    finally:
        # 关闭文件
        file.close()
except FileNotFoundError:
    print('文件不存在')
except IOError:
    print('文件读取错误')
except:
    print('其他异常')

ps:在Python 3.3及以上版本中,可以使用with语句来自动管理文件的打开和关闭操作。

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

使用with语句打开文件后,不需要显式调用close()方法,文件会在with块结束时自动关闭。

四、文件操作和路径处理

4.1 文件和文件夹的基本操作:创建、删除、移动、复制等

在Python中,可以使用os模块来进行文件和文件夹的基本操作,如创建、删除、移动、复制等。

  1. 创建文件夹
import os

folder_path = 'path/to/folder'
os.makedirs(folder_path)

ps:如果要创建的文件夹已经存在,会引发FileExistsError异常。

  1. 删除文件夹
import os

folder_path = 'path/to/folder'
os.rmdir(folder_path)

ps:只有当文件夹为空时才能成功删除,否则会引发OSError异常。

  1. 移动文件或文件夹
import os

source_path = 'path/to/source'
destination_path = 'path/to/destination'
os.rename(source_path, destination_path)

ps:目标位置已经存在同名的文件或文件夹,则会覆盖。

  1. 复制文件或文件夹
import shutil

source_path = 'path/to/source'
destination_path = 'path/to/destination'
shutil.copy(source_path, destination_path)

ps:目标位置已经存在同名的文件或文件夹,则会引发FileExistsError异常。

除了上述操作,os模块还提供了其他一些函数来执行更多的文件和文件夹操作,如列出目录内容、获取文件信息等。

4.2 路径的表示和处理:绝对路径和相对路径、os模块的应用

在Python中,路径可以表示为绝对路径或相对路径。

  • 绝对路径是从根目录开始的完整路径
  • 相对路径是相对于当前工作目录的路径

使用os模块来处理路径的常见操作

  1. 获取当前工作目录
import os

# getcwd()函数将返回当前工作目录的绝对路径
current_dir = os.getcwd()
print(current_dir)
  1. 组合路径
import os

# join()函数将多个路径组合为一个路径,并自动添加正确的路径分隔符
path = os.path.join('dir', 'subdir', 'file.txt')
print(path)
  1. 获取路径的目录名和文件名
import os

path = '/path/to/file.txt'
# dirname()函数将返回路径的目录部分
dirname = os.path.dirname(path)
# basename()函数将返回路径的文件名部分
basename = os.path.basename(path)
print(dirname)
print(basename)
  1. 判断路径是否存在
import os

path = '/path/to/file.txt'
# exists()函数将返回一个布尔值,指示路径是否存在
exists = os.path.exists(path)
print(exists)
  1. 拆分路径的目录名和文件名
import os

path = '/path/to/file.txt'
# split()函数将路径拆分为目录名和文件名,返回一个包含两个元素的元组
dirname, basename = os.path.split(path)
print(dirname)
print(basename)
  1. 获取路径的绝对路径
import os

path = 'relative/path/to/file.txt'
# abspath()函数将返回路径的绝对路径
absolute_path = os.path.abspath(path)
print(absolute_path)

这些只是os模块中一些常见的路径操作函数,还有其他更多的函数可用于处理路径。

五、异常处理和调试

5.1 异常的基本概念和分类:语法错误、运行时错误、逻辑错误等

在Python中,异常是指由于某种原因导致程序无法正常执行的错误情况。当遇到异常情况时,程序会抛出一个异常对象,如果没有被处理,程序将会崩溃并输出错误信息。

Python中的异常可以分为三类

  1. 语法错误(SyntaxError):通常是由于代码书写不规范而导致的错误,例如拼写错误、缺少括号等等。这种错误会在解释器之前就被检测到,因此无法运行程序。
  2. 运行时错误(RuntimeError):通常是由程序运行时出现的问题而导致的错误,例如除以零、文件不存在等等。这种错误会在程序运行时被检测到,并且可以通过异常处理机制来处理。
  3. 逻辑错误(LogicError):通常是由程序设计不当或者算法实现错误导致的错误,例如死循环、逻辑判断错误等等。这种错误通常不会被检测到,而是会导致程序产生错误的结果。

在Python中,我们可以使用try-except语句来捕获并处理异常。try块中的代码会被执行,如果出现异常,则会跳转到对应的except块进行处理。

try:
    # 可能会引发异常的代码块
    a = 1 / 0
except ZeroDivisionError:
    # 处理特定类型的异常
    print("除以零错误")
except:
    # 处理其他类型的异常
    print("未知错误")

ps:在except语句中可以省略异常类型,这样就会处理所有类型的异常。

除了try-except语句,Python还提供了其他一些异常处理机制,例如finally块、raise语句等等。

5.2 try-except语句:捕获和处理异常情况

在Python中,try-except语句用于捕获和处理异常情况。它允许我们对可能引发异常的代码进行监控,并在出现异常时执行相应的操作。

try-except语句的基本语法如下:

try:
    # 可能会引发异常的代码块
except [异常类型]:
    # 处理异常的代码块

在except语句中,可以指定特定的异常类型来捕获和处理特定类型的异常。如果未指定异常类型,则会捕获所有类型的异常。

常见的异常类型

  • Exception:所有异常的基类,可以捕获任何类型的异常。
  • ValueError:值错误,当传递给函数的参数类型正确但值不合法时引发。
  • TypeError:类型错误,当操作或函数应用于不兼容的类型时引发。
  • FileNotFoundError:文件不存在错误,当尝试打开不存在的文件时引发。
  • ZeroDivisionError:除以零错误,当尝试除以零时引发。

除了指定特定的异常类型,我们还可以使用多个except块来处理不同的异常情况。

try:
    # 可能会引发异常的代码块
except ValueError:
    # 处理值错误的代码块
except FileNotFoundError:
    # 处理文件不存在的代码块
except:
    # 处理其他异常的代码块

在except语句中,也可以添加else块和finally块。else块中的代码将在try块中没有发生异常时执行,而finally块中的代码将始终执行,无论是否发生异常。

try:
    # 可能会引发异常的代码块
except ValueError:
    # 处理值错误的代码块
else:
    # try块中没有发生异常时执行的代码块
finally:
    # 无论是否发生异常,始终会执行的代码块

通过使用try-except语句,我们可以更好地控制和处理程序中可能出现的异常情况,避免程序崩溃并提供友好的错误处理。

5.3 调试技巧:print语句、断点调试、日志记录等

在Python中,调试是开发过程中必不可少的活动。Python提供了多种调试技巧,包括print语句、断点调试和日志记录等。

  1. print语句

print语句是最简单的调试技巧之一。它可以打印出变量的值,以便我们查看程序的执行过程。

x = 10
print(x) # 输出变量x的值,即10
  1. 断点调试

除了print语句,Python还支持断点调试。断点调试是一种交互式的调试方式,它允许我们在程序执行到指定的行时暂停程序,以便我们检查变量的值和程序的状态。

在Python中,我们可以使用pdb模块来实现断点调试。我们只需要在程序中插入一个断点,当程序执行到该行时就会暂停,然后我们可以使用pdb模块来查看和修改变量的值。

import pdb

def add(a, b):
    # pdb.set_trace()函数来启动调试器
    # 程序执行到该行时,就会停止并转到pdb调试器界面
    pdb.set_trace()
    return a + b

print(add(1, 2))
  1. 日志记录

日志记录是一种更高级的调试技巧,它允许我们在程序执行过程中记录各种信息,例如变量的值、函数的调用情况等等。这些信息可以写入文件或输出到控制台,以便我们查看和分析程序的执行过程。

Python提供了logging模块来实现日志记录。我们只需要在程序中初始化日志记录器,并在程序中使用相关的日志记录函数来记录信息即可。

import logging

# basicConfig函数来初始化日志记录器,并指定了日志记录的级别为DEBUG
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# logging.debug函数来记录一个调试信息
logging.debug('This is a debug message')

# 类似输出结果
2022-12-28 16:07:57,504 - DEBUG - This is a debug message

除了debug函数,logging模块还提供了info、warning、error和critical等函数,可以根据具体的调试需求选择相应的函数。

六、CSV和JSON文件的读写

6.1 CSV文件的读写:csv模块的应用

在Python中,我们可以使用csv模块来读写CSV文件。CSV是一种常用的数据格式,通常用于存储表格数据。

csv模块提供了多种方法来读写CSV文件,包括读取CSV文件、写入CSV文件、以及将数据转换为CSV格式等。

  1. 读取CSV文件

使用csv模块中的reader函数来读取CSV文件。该函数返回一个迭代器,用于逐行读取CSV文件中的数据。

import csv

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
  1. 写入CSV文件

使用csv模块中的writer函数来写入CSV文件。该函数接受一个可迭代对象作为输入,用于将数据写入CSV文件中。

import csv

data = [
    ['Name', 'Age', 'Gender'],
    ['Tom', 20, 'Male'],
    ['Lucy', 18, 'Female'],
    ['John', 22, 'Male']
]

# 创建一个名为data.csv的CSV文件
with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)
  1. 将数据转换为CSV格式

使用csv模块中的writerow函数来将数据转换为CSV格式。该函数接受一个可迭代对象作为输入,用于将数据转换为一行CSV格式的数据。

import csv

data = ['Tom', 20, 'Male']

with open('data.csv', 'a', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(data)

在以上示例中,我们使用了open函数来打开CSV文件,并使用了with语句来自动关闭文件。在调用open函数时,我们需要指定文件的路径和打开文件的模式('r’表示只读,'w’表示写入,'a’表示追加)。同时,我们还需要指定newline参数,以避免在写入CSV文件时出现空行。

6.2 JSON文件的读写:json模块的应用

在Python中,我们可以使用json模块来读写JSON文件。JSON(JavaScript Object Notation)是一种常用的数据格式,通常用于存储和交换数据。

json模块提供了多种方法来读写JSON文件,包括将数据转换为JSON格式、将JSON格式的数据转换为Python对象、读取JSON文件、以及将Python对象写入JSON文件等。

  1. 将数据转换为JSON格式

使用json模块中的dumps函数将数据转换为JSON格式的字符串。该函数接受一个Python对象作为输入,并返回一个JSON格式的字符串。

import json

data = {
    'name': 'Tom',
    'age': 20,
    'gender': 'Male'
}

# 将data字典中的数据转换为JSON格式的字符串
json_str = json.dumps(data)
print(json_str)
  1. 将JSON格式的数据转换为Python对象

使用json模块中的loads函数将JSON格式的字符串转换为Python对象。该函数接受一个JSON格式的字符串作为输入,并返回一个对应的Python对象。

import json

json_str = '{"name": "Tom", "age": 20, "gender": "Male"}'

# 将json_str字符串中的JSON格式数据转换为Python对象
data = json.loads(json_str)
print(data)
  1. 读取JSON文件

使用json模块中的load函数来读取JSON文件。该函数接受一个文件对象作为输入,并返回对应的Python对象。

import json

with open('data.json', 'r') as f:
    # load函数读取其中的数据,并将其转换为Python对象
    data = json.load(f)
    print(data)
  1. 将Python对象写入JSON文件

使用json模块中的dump函数来将Python对象写入JSON文件。该函数接受一个Python对象和一个文件对象作为输入,将Python对象转换为JSON格式后写入文件中。

例如:

import json

data = {
    'name': 'Tom',
    'age': 20,
    'gender': 'Male'
}

# 将data字典中的数据转换为JSON格式,并写入名为data.json的文件
with open('data.json', 'w') as f:
    json.dump(data, f)

在以上示例中,我们使用了open函数来打开JSON文件,并使用了with语句来自动关闭文件。在调用open函数时,我们需要指定文件的路径和打开文件的模式('r’表示只读,'w’表示写入,'a’表示追加)。

七、实践项目:用Python GUI程序实现一个计算器

使用了tkinter模块来创建一个简单的GUI界面,并实现了一个简单的计算器

import tkinter as tk

class Calculator:
    def __init__(self, master):
        self.master = master
        self.result = tk.StringVar()
        self.create_widgets()

    def create_widgets(self):
        # 显示结果的标签
        result_label = tk.Label(self.master, textvariable=self.result)
        result_label.grid(row=0, column=0, columnspan=4)

        # 数字按钮
        for i in range(10):
            button = tk.Button(self.master, text=str(i), command=lambda num=i: self.add_number(num))
            button.grid(row=(9-i)//3+1, column=(i-1)%3)

        # 运算符按钮
        plus_button = tk.Button(self.master, text='+', command=lambda: self.add_operator('+'))
        plus_button.grid(row=1, column=3)
        minus_button = tk.Button(self.master, text='-', command=lambda: self.add_operator('-'))
        minus_button.grid(row=2, column=3)
        multiply_button = tk.Button(self.master, text='*', command=lambda: self.add_operator('*'))
        multiply_button.grid(row=3, column=3)
        divide_button = tk.Button(self.master, text='/', command=lambda: self.add_operator('/'))
        divide_button.grid(row=4, column=3)

        # 清空按钮
        clear_button = tk.Button(self.master, text='C', command=self.clear)
        clear_button.grid(row=5, column=3)

        # 等号按钮
        equal_button = tk.Button(self.master, text='=', command=self.calculate)
        equal_button.grid(row=4, column=2)

    def add_number(self, num):
        self.result.set(self.result.get() + str(num))

    def add_operator(self, operator):
        self.result.set(self.result.get() + operator)

    def clear(self):
        self.result.set('')

    def calculate(self):
        try:
            result = eval(self.result.get())
            self.result.set(str(result))
        except ZeroDivisionError:
            self.result.set('Error')

if __name__ == '__main__':
    root = tk.Tk()
    root.title('Calculator')
    Calculator(root)
    root.mainloop()

不要垂头丧气,即使失去一切,明天仍在你的手里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/339994.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何让亚马逊,速卖通,美客多店铺排名和流量稳定爬升

一、关键词优化 关键词是亚马逊店铺排名的关键。通过合理的关键词优化,可以提高店铺的曝光率。卖家需要研究消费者的搜索习惯和行为,了解他们使用哪些关键词进行搜索,然后将这些关键词用于商品描述、标题和元数据中。此外,还可以…

GEE:最小距离分类器(minimumDistance)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行最小距离分类(minimumDistance)的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行…

PCIe-6328 八口USB3.0图像采集卡:专为工业自动化和机器视觉设计

PCIe-6328一块8口USB 3.0主控卡,专为工业自动化和机器视觉相关应用设计。USB 3.0或称作高速USB,是一项新兴总线技术,10倍于USB2.0的传输速度,尤其适用于高速数据存储和图 像设备。 绝大多数现有USB 3.0卡兼用多个接口于一个USB 3…

中仕教育:国考调剂和补录的区别是什么?

国考笔试成绩和进面名单公布之后,考生们就需要关注调剂和补录了,针对二者之间的区别很多考生不太了解,本文为大家解答一下关于国考调剂和补录的区别。 1.补录 补录是在公式环节之后进行的,主要原因是经过面试、体检和考察&#…

喝酒高境界:微醺和断片之间找到平衡

云仓酒庄的品牌雷盛红酒LEESON分享喝酒追求放松,喝的刚刚好就是微醺状态,喝大了就会断片。所以有人说,喝酒最高的境界是在微醺与断片之间找到一种平衡。 微醺是指稍有酒意但完全清醒且没有任何不良反应,可以散步走回家&#xff0c…

5118会员优惠码,拿走不谢,2024年最新的优惠码

5118大数据平台会员优惠码【yhm666】,结算时勾选“使用优惠码”,然后在优惠码窗口中输入yhm666,然后点确定即可享受特价会员价格。阿腾云atengyun.com分享如下图: 5118会员优惠码【yhm666】 5118会员价格和使用优惠码之后的价格对…

ctfshow-反序列化(web267-web270)

目录 web267 web268 web269 web270 总结 web267 页面用的什么框架不知道 看源码看一下 框架就是一种软件工具,它提供了一些基础功能和规范,可以帮助开发者更快地构建应用程序。比如Yii框架和ThinkPHP框架就是两个流行的PHP框架,它们提供…

租赁一台同传设备,哪里比较专业呢

我们知道 ,同声传译设备在会议、演讲或其他语言交流场合中发挥着至关重要的作用。它们能够实现不同语言之间的即时翻译,让与会者或听众更准确地理解会议或演讲的内容。对于跨国会议或活动,同声传译设备是确保语言沟通顺畅的必要工具。那么&am…

如何搭建MariaDB并实现无公网ip环境远程连接本地数据库

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 1. 配置MariaDB数据库1.1 安装MariaDB数据库1.2 测试局域网内远程连接 2. 内网穿透2.1 创建隧道映射…

2017年认证杯SPSSPRO杯数学建模B题(第二阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 B题 岁月的印记 原题再现: 对同一个人来说,如果没有过改变面容的疾病、面部外伤或外科手术等经历,年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两张不同年龄段的照片是不是同一个人…

sqli-labs通关笔记(less-11 ~ less16)

上一篇文章说了sqli-labs的less-1到less-10的注入方法,这一篇从less-11开始。 由于从11关开始都是post请求,不会像前十关一样存在符号转成url编码的麻烦,所以不再使用apifox,直接从页面上进行测试。 Less-11 老规矩,…

MySQL 8.3 发布,具体有哪些新增和删减?

MySQL 8.3 主要更新:用于标记事务分组的 GTID、JSON EXPLAIN 格式增强、一些功能删除等。 MySQL 是一款广泛使用的开源的关系型数据库管理系统,已推出其最新版本 MySQL 8.3。它带来了新功能和一些删除,有望简化数据库操作。让我们来看看有哪些…

机器学习:BootStrapping(Python)

import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.decomposition import PCA # 主成分分析 from sklearn.preprocessing import LabelEncoder, StandardScaler # 类别标签编码,标准化处理 import matplo…

MySQL ORDER BY(排序) 语句

昨天介绍了 MySQL 数据库 UNION 操作符的使用,今天主要讲解下 ORDER BY(排序)语句。 我们知道从 MySQL 表中使用 SELECT 语句来读取数据。如果需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字…

React Native性能优化指南

摘要 本文将介绍在React Native开发中常见的性能优化问题和解决方案,包括ScrollView内无法滑动、热更新导致的文件引用问题、高度获取、强制横屏UI适配、低版本RN适配iOS14、缓存清理、navigation参数取值等。通过代码案例演示和详细说明,帮助开发者更好…

如何本地安装Python Flask并结合内网穿透实现远程开发

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

深度学习记录--学习率衰减(learning rate decay)

学习率衰减 mini-batch梯度下降最终会在最小值附近的区间摆动(噪声很大),不会精确收敛 为了更加近似最小值,采用学习率衰减的方法 随着学习率的衰减,步长会逐渐变小,因此最终摆动的区间会很小,更加近似最小值 如下…

DSP Bootloader

DSP Bootloader Refer: DSP Bootloader开发思路讲解

SpringMvc中拦截器的配置及应用

拦截器原理 在 Spring MVC 中,拦截器(Interceptor)是一种机制,用于拦截请求并在处理程序(Controller)执行之前或之后执行一些操作。拦截器允许您在请求的不同阶段(如处理程序执行前、处理程序执…

网络安全(初版,以后会不断更新)

1.网络安全常识及术语 资产 任何对组织业务具有价值的信息资产,包括计算机硬件、通信设施、IT 环境、数据库、软件、文档 资料、信息服务和人员等。 漏洞 上边提到的“永恒之蓝”就是windows系统的漏洞 漏洞又被称为脆弱性或弱点(Weakness)&a…