【Python文件】操作终极指南:高效管理和处理文件系统的必备技能

目录

​编辑

1. 文件的基础操作

1.1 打开/关闭文件

​编辑

示例代码

文件对象

使用with语句打开文件

2. 读文件

2.1 使用read方法读取文件

2.2 使用readline方法读取文件

2.3 使用readlines方法读取文件

2.4 使用for循环读取文件

3. 写文件

3.1 使用write方法写文件

3.2 使用writelines方法写文件

3.3 关于读写缓冲区

4. 操作文件指针

4.1 使用seek方法操作文件指针

4.2 使用tell方法获取文件指针位置

4.3 示例:随机访问文件内容

5. 文件对象内建属性与上下文管理器

5.1 文件对象的内建属性

5.2 使用上下文管理器打开文件

5.3 自定义上下文管理器

6. 文件系统的基础操作

6.1 文件路径操作

6.2 常用文件系统操作

创建文件

删除文件

创建目录

删除目录

遍历目录

6.3 使用os.walk函数递归遍历目录

6.4 代码示例:用Python生成一个Python的Hello World文件并执行

6.5 代码示例:实现ls命令

6.6 代码示例:遍历目录中的所有目录和文件

总结

1. 文件的基础操作

2. 读文件

3. 写文件

4. 操作文件指针

5. 文件对象内建属性与上下文管理器

6. 文件系统的基础操作


 

专栏:python学习笔记 

上一篇:python字典详解

1. 文件的基础操作

1.1 打开/关闭文件

在Python中,使用内置函数open可以打开一个指定路径下的文件,并返回一个文件对象。常用的打开方式有:

  • 'r':读(默认)
  • 'w':写
  • 'a':追加写
  • 'b':二进制模式

open函数的第一个参数是文件名,可以是相对路径或者绝对路径,第二个参数是打开方式。以下是各种打开方式的详细解释:

  • 'r':以只读模式打开文件。文件指针将会放在文件的开头。这是默认模式,如果文件不存在,则会抛出FileNotFoundError
  • 'w':以写模式打开文件。如果文件已存在,则会覆盖原文件。如果文件不存在,则会创建新文件。
  • 'a':以追加模式打开文件。文件指针将会放在文件的末尾。如果文件不存在,则会创建新文件。
  • 'b':以二进制模式打开文件。此模式用于读写二进制文件,如图片、视频等。可以与其他模式结合使用,如'rb''wb''ab'等。
示例代码

以下是一个简单的示例,演示如何打开和关闭文件:

# 打开文件以读取模式
file = open('example.txt', 'r')

# 关闭文件
file.close()

分析: 在上面的示例中,我们使用open函数以读取模式打开了一个名为example.txt的文件。完成操作后,我们使用close方法关闭文件。这是一个良好的实践,因为每个打开的文件都会占用系统资源。

但是,如果文件不存在,会发生什么呢?:

try:
    file = open('non_existent_file.txt', 'r')
    file.close()
except FileNotFoundError:
    print("文件不存在")

 

分析: 上述代码尝试打开一个不存在的文件。由于文件不存在,open函数会抛出FileNotFoundError异常。我们使用try-except块捕获并处理该异常,以避免程序崩溃。

文件对象

在Python中,文件对象不仅包含了文件描述符,还包含了文件的一些其他属性。文件描述符是一个整数,它唯一标识一个打开的文件。操作系统通过文件描述符进行文件操作。

文件对象支持的方法:

  • read(size=-1):从文件读取指定数量的字节。如果未指定size,则读取整个文件。
  • readline(size=-1):读取文件的一行。如果指定了size,则最多读取size个字节。
  • readlines(hint=-1):读取文件的所有行并返回一个列表。如果指定了hint,则返回总字节数不超过hint的行。
  • write(string):将字符串写入文件。
  • writelines(lines):将字符串列表写入文件。
  • close():关闭文件。

使用with语句打开文件

为了简化文件操作并确保文件在使用完毕后自动关闭,Python引入了上下文管理器,这使得可以使用with语句来打开文件。with语句会自动管理文件的打开和关闭操作。

示例代码:

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

 

 遇到的错误是由于Python默认使用的编码格式与文件的实际编码格式不匹配。可以通过显式指定文件的编码格式来解决这个问题。如果不确定文件的编码格式,可以尝试使用常见的编码格式,比如UTF-8。

文件的编码格式有很多,常见的包括以下几种:

  1. UTF-8(Unicode Transformation Format - 8-bit):是一种可变长度字符编码,能表示所有Unicode字符,是目前最常用的编码格式。
  2. UTF-16(Unicode Transformation Format - 16-bit):也是一种Unicode字符编码格式,使用16位及以上编码字符,适合需要支持所有Unicode字符的大型文本。
  3. UTF-32(Unicode Transformation Format - 32-bit):每个字符固定使用32位进行编码,简化了字符处理过程,但文件会更大。
  4. ASCII(American Standard Code for Information Interchange):早期的字符编码标准,只包含128个字符,用7位或8位编码,适合英文文本。
  5. ISO-8859-1(Latin-1):是一种单字节字符编码,支持西欧语言,用8位编码。
  6. GBK(扩展国标):是中文字符集,兼容GB2312,扩展支持更多汉字及符号。
  7. GB2312:早期的中文字符集标准,只包含部分常用汉字和符号。
  8. BIG5:是台湾和香港地区使用的中文编码标准,与GBK类似。

你可以根据文件的实际编码选择合适的编码格式。在Python中,可以通过指定encoding参数来设置文件的编码格式。

下面是修改后的代码:

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

 

分析: 在这个示例中,with语句块内的所有操作都可以使用file对象进行。当with语句块结束时,文件会自动关闭。这种方式不仅简洁,而且可以确保文件总是被正确关闭,即使在出现异常时也是如此。

小李的理解: 文件操作时要记得关闭文件,不然会占用资源。用with语句可以自动帮你关掉文件,不用担心忘记关。

2. 读文件

读文件是文件操作中最常见的任务之一。Python提供了多种方法来读取文件内容,包括readreadlinereadlines

2.1 使用read方法读取文件

read方法用于读取指定长度的字节数,并返回一个字符串。如果未指定size,则读取整个文件。该方法适用于读取较小的文件,因为它会将文件内容一次性加载到内存中。

示例代码:

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

分析: 在这个示例中,使用read方法读取了整个文件的内容,并将其打印出来。

2.2 使用readline方法读取文件

readline方法用于读取文件的一行,并返回一个字符串。每次调用该方法,文件指针都会向下移动一行,直到文件末尾。

若example.txt 有两行

示例代码:

with open('example.txt', 'r', encoding='utf-8') as file:
    line = file.readline()
    while line:
        print(line, end='')
        line = file.readline()

分析: 在这个示例中,使用readline方法逐行读取文件,并将每一行打印出来。end=''参数用于避免在每行末尾添加额外的换行符,因为readline方法已经保留了行末的换行符。

2.3 使用readlines方法读取文件

readlines方法用于读取文件的所有行,并返回一个列表。列表中的每个元素都是文件的一行。

示例代码:

with open('example.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')

 

分析: 在这个示例中,使用readlines方法读取了文件的所有行,并将每一行打印出来。

2.4 使用for循环读取文件

除了上述方法,还可以直接使用for循环遍历文件对象。每次迭代都会返回文件的一行,这种方法在处理大文件时非常高效。

示例代码:

with open('example.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line, end='')

 

分析: 在这个示例中,使用for循环逐行读取文件,并将每一行打印出来。

小李的理解: 读文件有很多方法,read一次读完,readline一行行读,readlines全部读成列表,for循环更省内存。记住看需求选方法。

3. 写文件

写文件是文件操作中的另一个重要任务。Python提供了writewritelines方法来将数据写入文件。

3.1 使用write方法写文件

write方法用于向文件中写入一个字符串。如果文件以写模式('w')打开,则会覆盖文件的内容。如果文件以追加模式('a')打开,则会在文件末尾追加内容。

示例代码:

with open('output.txt', 'w') as file:
    file.write('Hello, World!\n')
    file.write('小李很执着\n')

 

分析: 在这个示例中,使用write方法向文件中写入了两行文本。每次写入操作都需要显式添加换行符(\n)。

3.2 使用writelines方法写文件

writelines方法用于向文件中写入一个字符串列表。列表中的每个元素都将作为文件的一行写入。

示例代码:

lines = ['第一行文本\n', '第二行文本\n', '第三行文本\n']
with open('output.txt', 'w') as file:
    file.writelines(lines)

 

 

分析: 在这个示例中,使用writelines方法向文件中写入了一个字符串列表。需要注意的是,writelines方法不会自动添加换行符,因此我们需要在每个字符串末尾手动添加换行符。

3.3 关于读写缓冲区

在读写文件时,Python提供了缓冲区机制,以提高文件操作的性能。在使用open函数时,可以通过第三个参数来指定缓冲区大小。

示例代码:

with open('output.txt', 'w', buffering=2048) as file:
    file.write('使用缓冲区写入数据。\n')

分析: 在这个示例中,指定了缓冲区大小为2048字节。缓冲区机制可以减少I/O操作的频率,从而提高性能。可以使用flush方法手动刷新缓冲区,将数据写入文件。

示例代码:

with open('output.txt', 'w', buffering=2048) as file:
    file.write('使用缓冲区写入数据。\n')
    file.flush()

 

分析: 在这个示例中,在写入数据后调用flush方法,将缓冲区中的数据立即写入文件。

小李的理解: 写文件要加换行符,不然会连在一起。缓冲区像个临时储物柜,可以提高速度。用flush可以马上把数据存到文件里。

4. 操作文件指针

文件指针用于指示当前文件操作的位置。在读写文件时,可以通过文件指针来实现随机访问。Python提供了seektell方法来操作文件指针。

4.1 使用seek方法操作文件指针

seek方法用于将文件指针移动到指定位置。seek方法有两个参数:

  • offset:表示偏移量。
  • whence:表示偏移量的起始位置。可选值为:
    • 0:从文件开头计算(默认)。
    • 1:从当前位置计算。
    • 2:从文件末尾计算。

示例代码:

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

 

分析: 在这个示例中,使用seek方法将文件指针移动到文件开头的第10个字节处,然后读取文件内容并打印。

4.2 使用tell方法获取文件指针位置

tell方法用于获取当前文件指针的位置,返回值是文件指针到文件开头的偏移量(以字节为单位)。

示例代码:

with open('example.txt', 'r', encoding='gbk') as file:
    file.seek(10, 0)
    position = file.tell()
    print(f"文件指针位置:{position}")

 

分析: 在这个示例中,使用seek方法将文件指针移动到文件开头的第10个字节处,然后使用tell方法获取当前文件指针的位置并打印。

4.3 示例:随机访问文件内容

通过结合使用seektell方法,可以实现文件的随机访问。例如,我们可以实现一个功能,从文件的任意位置读取特定长度的内容。

示例代码:

def read_from_position(file_path, position, length):
    with open(file_path, 'r', encoding='utf-8') as file:
        file.seek(position, 0)
        content = file.read(length)
        return content

file_path = 'example.txt'
position = 10
length = 20

content = read_from_position(file_path, position, length)
print(f"从位置{position}读取的内容:{content}")

 

分析: 在这个示例中,定义了一个函数read_from_position,用于从指定位置读取特定长度的内容。我们通过传入文件路径、读取位置和读取长度来调用该函数,并打印读取到的内容。

小李的理解: 文件指针像磁带播放器的磁头,可以定位到文件的任意位置开始读写。seek是移动指针,tell是告诉你指针的位置。

5. 文件对象内建属性与上下文管理器

文件对象除了支持基本的读写操作外,还提供了一些内建属性和方法。此外,Python引入了上下文管理器,使得文件操作更加简洁和安全。

5.1 文件对象的内建属性

文件对象具有以下常用属性:

  • name:文件的名称。
  • mode:文件的打开模式。
  • closed:文件是否已关闭。

示例代码:

with open('example.txt', 'r') as file:
    print(f"文件名:{file.name}")
    print(f"打开模式:{file.mode}")
    print(f"是否关闭:{file.closed}")

 

分析: 在这个示例中,使用文件对象的属性获取文件的名称、打开模式以及文件是否已关闭。

5.2 使用上下文管理器打开文件

上下文管理器通过with语句来管理资源的打开和关闭。在文件操作中,使用上下文管理器可以确保文件在操作完成后自动关闭,即使在发生异常时也是如此。

示例代码:

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

 

分析: 在这个示例中,使用with语句打开文件,并在语句块内读取文件内容。当with语句块结束时,文件会自动关闭。

5.3 自定义上下文管理器

除了内置的文件对象,Python还允许我们自定义上下文管理器。要创建一个自定义上下文管理器,需要实现__enter____exit__方法。

示例代码:

class CustomFile:
    def __init__(self, file_name, mode):
        self.file_name = file_name
        self.mode = mode

    def __enter__(self):
        self.file = open(self.file_name, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file.close()

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

 

分析: 在这个示例中,定义了一个自定义上下文管理器CustomFile,并实现了__enter____exit__方法。在__enter__方法中打开文件,并返回文件对象。在__exit__方法中关闭文件。这样,我们就可以使用with语句来管理文件操作了。

小李的理解: 文件对象有一些属性可以方便查询。用with语句打开文件,文件会自动关闭,不用担心忘记关。如果要管理更多资源,可以自定义上下文管理器。

6. 文件系统的基础操作

除了基本的文件读写操作,Python还提供了对文件系统进行操作的功能,包括文件路径操作和常用文件系统操作。

6.1 文件路径操作

使用os.path模块可以方便地进行文件路径操作。该模块提供了许多实用的函数来处理文件路径。

示例代码:

import os.path

# 获取文件名
file_name = os.path.basename('/home/user/example.txt')
print(f"文件名:{file_name}")

# 获取目录路径
dir_name = os.path.dirname('/home/user/example.txt')
print(f"目录路径:{dir_name}")

# 分割路径
path, file = os.path.split('/home/user/example.txt')
print(f"路径:{path}, 文件:{file}")

# 分离文件名和扩展名
name, ext = os.path.splitext('/home/user/example.txt')
print(f"文件名:{name}, 扩展名:{ext}")

 

分析: 在这个示例中,使用os.path模块的函数来获取文件名、目录路径、分割路径以及分离文件名和扩展名。

6.2 常用文件系统操作

使用os模块可以进行文件和目录的操作,如创建文件、删除文件、遍历目录等。

创建文件

使用open函数可以创建文件。如果文件不存在,open函数会自动创建新文件。

示例代码:

with open('new_file.txt', 'w') as file:
    file.write('这是一个新文件。')

 

分析: 在这个示例中,使用open函数创建了一个名为new_file.txt的新文件,并向其中写入了一段文本。

删除文件

使用os.remove函数可以删除文件。此函数接受一个文件路径作为参数,如果文件不存在,则会引发FileNotFoundError异常。

示例代码:

import os

file_path = 'new_file.txt'

# 检查文件是否存在
if os.path.exists(file_path):
    os.remove(file_path)
    print(f"文件 {file_path} 已删除")
else:
    print(f"文件 {file_path} 不存在")

 

分析: 在这个示例中,首先检查文件是否存在,然后调用os.remove函数删除文件。

创建目录

使用os.mkdir函数可以创建目录。此函数接受一个目录路径作为参数。如果目录已存在,则会引发FileExistsError异常。

示例代码:

import os

dir_path = 'new_directory'

# 创建新目录
if not os.path.exists(dir_path):
    os.mkdir(dir_path)
    print(f"目录 {dir_path} 已创建")
else:
    print(f"目录 {dir_path} 已存在")

 

分析: 在这个示例中,首先检查目录是否存在,然后调用os.mkdir函数创建目录。

删除目录

使用os.rmdir函数可以删除空目录。此函数接受一个目录路径作为参数。如果目录不为空,则会引发OSError异常。

示例代码:

import os

dir_path = 'new_directory'

# 删除目录
if os.path.exists(dir_path) and os.path.isdir(dir_path):
    os.rmdir(dir_path)
    print(f"目录 {dir_path} 已删除")
else:
    print(f"目录 {dir_path} 不存在或不是目录")

 

分析: 在这个示例中,首先检查目录是否存在并且是否为目录,然后调用os.rmdir函数删除目录。

遍历目录

使用os.listdir函数可以列出指定目录中的所有文件和目录。此函数接受一个目录路径作为参数,返回该目录中的所有文件和目录名的列表。

示例代码:

import os

dir_path = '.'

# 列出目录中的所有文件和目录
entries = os.listdir(dir_path)
for entry in entries:
    print(entry)

 

分析: 在这个示例中,使用os.listdir函数列出了当前目录中的所有文件和目录。

6.3 使用os.walk函数递归遍历目录

os.walk函数可以递归遍历目录树,生成一个包含目录路径、目录名列表和文件名列表的三元组。

import os

dir_path = '.'

# 递归遍历目录
for root, dirs, files in os.walk(dir_path):
    print(f"目录路径: {root}")
    print(f"目录名列表: {dirs}")
    print(f"文件名列表: {files}")
    print('-----')

 

分析: 在这个示例中,使用os.walk函数递归遍历当前目录及其子目录,并打印每个目录的路径、目录名列表和文件名列表。

6.4 代码示例:用Python生成一个Python的Hello World文件并执行

可以使用os模块创建一个Python脚本文件,并使用os.system函数执行该脚本。

示例代码:

import os

file_name = 'hello.py'

# 创建并写入Python脚本
with open(file_name, 'w') as file:
    file.write('#!/usr/bin/python\n')
    file.write('print("Hello, World!")\n')

# 设置脚本为可执行
os.chmod(file_name, 0o755)

# 执行Python脚本
os.system(f'./{file_name}')

 

 

分析: 在这个示例中,我们首先创建一个名为hello.py的Python脚本文件,并向其中写入Hello, World!打印语句。然后,我们使用os.chmod函数设置文件为可执行,最后使用os.system函数执行该脚本。

6.5 代码示例:实现ls命令

可以使用os模块实现类似ls命令的功能,列出指定目录中的所有文件和目录。

示例代码:

import os
import sys

# 获取命令行参数中的目录路径
dir_path = sys.argv[1] if len(sys.argv) > 1 else '.'

# 列出目录中的所有文件和目录
for entry in os.listdir(dir_path):
    print(entry)

 

分析: 在这个示例中,从命令行参数中获取目录路径,并使用os.listdir函数列出该目录中的所有文件和目录。如果未提供目录路径,则默认列出当前目录。

6.6 代码示例:遍历目录中的所有目录和文件

我们可以使用os.walk函数递归遍历目录中的所有目录和文件,并打印每个文件的完整路径。

示例代码:

import os
import sys

# 获取命令行参数中的目录路径
dir_path = sys.argv[1] if len(sys.argv) > 1 else '.'

# 递归遍历目录
for root, dirs, files in os.walk(dir_path):
    for file in files:
        print(os.path.join(root, file))

 

分析: 在这个示例中,从命令行参数中获取目录路径,并使用os.walk函数递归遍历目录中的所有目录和文件,并打印每个文件的完整路径。

小李的理解: os.path可以帮你处理路径问题,比如获取文件名和目录。用os模块可以做很多文件和目录的操作,比如创建和删除文件、遍历目录。os.walk可以递归遍历目录,非常强大。

总结

在现代编程环境中,掌握文件操作技能对于开发者来说至关重要。Python作为一种高效、简洁的编程语言,提供了强大的文件操作功能。文件的基本操作、读写文件、文件指针的操作以及文件系统的操作。

1. 文件的基础操作

文件的基础操作是Python文件处理的核心部分。通过使用内置函数openclose,我们可以打开和关闭文件,并确保系统资源的有效利用。使用with语句可以简化文件操作,并确保文件在使用完毕后自动关闭,从而避免资源泄漏。

2. 读文件

Python提供了多种方法来读取文件内容,包括readreadlinereadlines。每种方法都有其独特的适用场景和优势。通过掌握这些方法,我们可以根据具体需求选择最合适的文件读取方式,确保代码的高效性和可维护性。

3. 写文件

写文件是文件操作中的另一个重要任务。Python的writewritelines方法提供了灵活的写入方式。结合使用读写缓冲区,可以进一步提高文件操作的性能。掌握这些写文件的方法,将使您能够高效地处理文件写入任务。

4. 操作文件指针

文件指针操作使我们能够实现文件的随机访问。通过seektell方法,我们可以灵活地控制文件指针的位置,从而实现高效的文件读取和写入。文件指针操作在处理大文件时尤为重要,因为它允许我们在不读取整个文件的情况下访问特定部分的数据。

5. 文件对象内建属性与上下文管理器

文件对象提供了一些内建属性,帮助我们获取文件的基本信息。此外,Python引入了上下文管理器,使得文件操作更加简洁和安全。通过自定义上下文管理器,我们可以管理更多的资源,进一步提高代码的可读性和可靠性。

6. 文件系统的基础操作

Python的osos.path模块提供了丰富的文件系统操作功能,包括文件路径操作、创建和删除文件和目录、遍历目录等。这些功能使我们能够高效地管理文件系统,并实现复杂的文件操作任务。通过掌握这些基础操作,您将能够在各种编程场景中灵活地处理文件系统。

如果您有任何问题或需要进一步的帮助,请随时留言讨论。Happy coding!

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

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

相关文章

Podman 深度解析

目录 引言Podman 的定义Podman 的架构Podman 的工作原理Podman 的应用场景Podman 在 CentOS 上的常见命令实验场景模拟总结 1. 引言 随着容器化技术的发展,Docker 已成为容器管理的代名词。然而,由于 Docker 的一些局限性,如需要守护进程和 …

基于java+springboot+vue实现的大学生就业需求分析系统(文末源码+Lw)233

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

jmeter-beanshell学习3-beanshell获取请求报文和响应报文

前后两个报文,后面报文要用前面报文的响应结果,这个简单,正则表达式或者json提取器,都能实现。但是如果后面报文要用前面请求报文的内容,感觉有点难。最早时候把随机数写在自定义变量,前后两个接口都用这个…

HTML5使用<progress>进度条、<meter>刻度条

1、<progress>进度条 定义进度信息使用的是 progress 标签。它表示一个任务的完成进度&#xff0c;这个进度可以是不确定的&#xff0c;只是表示进度正在进行&#xff0c;但是不清楚还有多少工作量没有完成&#xff0c;也可以用0到某个最大数字&#xff08;如&#xff1…

如何搜索查找ICLR论文

记录有几个查找顶级会议文章的网址&#xff0c;不止ICLR ICLR 2024 还会有visualization模式&#xff1a; ICLR 2024 virtual 这个网站也很棒 Paper Copilot ICLR 2024 当然还有一个用图表示各论文相关关系的网站&#xff1a; connected papers

ROS——坐标系管理、监听与广播、常用可视化工具

坐标系管理 TF功能包 小海龟追踪实验 ros版本(20.04)的tf安装命令: sudo apt-get install ros-noetic-turtle-tf 解决因python版本出现的无法生成跟随海龟&#xff1a; sudo ln -s /usr/bin/python3 /usr/bin/python ( -s 软链接,符号链接) ln命令&#xff08;英文全拼&#…

Matplotlib Artist 1 概览

Matplotlib API中有三层 matplotlib.backend_bases.FigureCanvas&#xff1a;绘制区域matplotlib.backend_bases.Renderer&#xff1a;控制如何在FigureCanvas上绘制matplotlib.artist.Artist&#xff1a;控制render如何进行绘制 开发者95%的时间都是在使用Artist。Artist有两…

【MYSQL】InnoDB引擎为什么选可重复读作为默认隔离级别

InnoDB引擎为什么选可重复读作为默认隔离级别 一般的DBMS系统&#xff0c;默认都会使用读提交&#xff08;Read-Comitted&#xff0c;RC&#xff09;作为默认隔离级别&#xff0c;如Oracle、SQL Server等&#xff0c;而MySQL却使用可重复读&#xff08;Read-Repeatable&#x…

MySQL 9.0 创新版发布,大失所望。。

大家好&#xff0c;我是程序员鱼皮。2024 年 7 月 1 日&#xff0c;MySQL 发布了 9.0 创新版本。区别于我们大多数开发者常用的 LTS&#xff08;Long-Term Support&#xff09;长期支持版本&#xff0c;创新版本的发布会更频繁、会更快地推出新的特性和变更&#xff0c;可以理解…

白嫖A100活动-入门篇-1.Linux+InterStudio

进入InterStudio 这节课是为了让大家熟悉使用InterStudio平台&#xff0c;以便后续开发 InterStudio平台是算力平台&#xff0c;可以通过平台使用A100,还可以使用“书生”团队集成好的环境、工具&#xff0c;快速部署LLMs. 进入平台&#xff1a; 记得报名&#xff0c;获得免…

快排的非递归实现

前提 快排的递归实现&#xff0c;在深度过深时会存在栈溢出的风险&#xff0c;所以我们需要掌握快排的非递归写法 快排的实现 单趟实现 上次我们使用了hoare的快排单趟写法&#xff0c;所以这次我们使用前后指针法. 前后指针法 初始状态下&#xff0c;初始化prev为left,cu…

Android Studio Run窗口中文乱码解决办法

Android Studio Run窗口中文乱码解决办法 问题描述&#xff1a; AndroidStudio 编译项目时Run窗口中文乱码&#xff0c;如图&#xff1a; 解决方法&#xff1a; 依次打开菜单&#xff1a;Help--Edit Custom VM Options&#xff0c;打开studio64.exe.vmoptions编辑框&#xf…

CV03_mAP计算以及COCO评价标准

COCO数据集回顾&#xff1a;CV02_超强数据集&#xff1a;MSCOCO数据集的简单介绍-CSDN博客 1.1 简介 在目标检测领域中&#xff0c;mAP&#xff08;mean Average Precision&#xff0c;平均精度均值&#xff09;是一个广泛使用的性能评估指标&#xff0c;用于衡量目标检测模型…

【Unity2D 2022:Particle System】添加命中粒子特效

一、创建粒子特效游戏物体 二、修改粒子系统属性 1. 基础属性 &#xff08;1&#xff09;修改发射粒子持续时间&#xff08;Duration&#xff09;为1s &#xff08;2&#xff09;取消勾选循环&#xff08;Looping&#xff09; &#xff08;2&#xff09;修改粒子存在时间&…

数据库管理工具 -- Navicat Premium v17.0.8 特别版

软件简介 Navicat Premium 是一款功能强大的数据库管理工具&#xff0c;适用于Windows、Mac和Linux平台。它支持多种数据库&#xff0c;包括MySQL、MariaDB、SQL Server、PostgreSQL、Oracle、SQLite等。用户可以通过Navicat Premium轻松地连接到各种数据库服务器&#xff0c;…

mac怎么压缩pdf文件,mac压缩pdf文件大小不改变清晰度

在数字化时代&#xff0c;pdf文件因其良好的兼容性和稳定性&#xff0c;已经成为我们日常办公和学习中不可或缺的文件格式。然而&#xff0c;随着文件内容的增多&#xff0c;pdf文件的体积也往往会变得越来越大&#xff0c;给文件的传输和存储带来不便。本文将为你介绍几种简单…

视觉语言模型:融合视觉与语言的未来

1. 概述 视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;是能够同时处理和理解视觉&#xff08;图像&#xff09;和语言&#xff08;文本&#xff09;两种模态信息的人工智能模型。这种模型结合了计算机视觉和自然语言处理的技术&#xff0c;使得它们能够在…

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

​ 常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode&#xff0c;简称LED)是一种能够将电能转化为光能的固态的半导体器件…

016-GeoGebra基础篇-加载项错误_使用此功能所需的服务已关闭,请检查你的隐私设置,

最近有伙伴说遇到一个问题&#xff1a;“加载项错误_使用此功能所需的服务已关闭&#xff0c;请检查你的隐私设置”&#xff0c;该怎么解决&#xff1f; 若大家也遇到同样的问题&#xff0c;建议按照我下边的步骤逐个排查下&#xff0c;基本可以解决“GeoGebra无法完美插入PPT…

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播&#xff0c;广播mac地址 mac帧 如何取用…