【一】open
1.1 - open()
用法
file = open(file_path, mode)
file_path
表示文件的路径,可以是相对路径或绝对路径。mode
表示打开文件的模式,它是一个字符串。常见的模式包括:'r'
以只读模式打开文件(默认模式)。'w'
以写入模式打开文件,如果文件已存在,则覆盖原有内容;如果文件不存在,则创建新文件。'a'
以追加模式打开文件,如果文件已存在,则在文件末尾追加内容;如果文件不存在,则创建新文件。'x'
以创建模式打开文件,如果文件已存在,则抛出异常;如果文件不存在,则创建新文件。'b'
以二进制模式打开文件,用于处理二进制数据(例如图片、视频等)。't'
以文本模式打开文件(默认模式),用于处理文本数据。
打开文件后,你可以使用文件对象执行各种操作,例如读取文件内容或写入数据到文件中。完成操作后,应该使用close()
方法关闭文件,以释放系统资源。例如:
file = open('file.txt', 'r')
content = file.read()
print(content)
file.close()
【二】whith open
2.1 with open()
用法
with open
是一种Python语法,用于以一种更简洁和安全的方式打开文件。它可以自动管理文件的打开和关闭,无需显式调用close()
方法。
以下是使用with open
的基本语法:
mode
表示打开文件的模式,它是一个字符串。常见的模式包括:
'r'
以只读模式打开文件(默认模式)。'w'
以写入模式打开文件,如果文件已存在,则覆盖原有内容;如果文件不存在,则创建新文件。'a'
以追加模式打开文件,如果文件已存在,则在文件末尾追加内容;如果文件不存在,则创建新文件。'x'
以创建模式打开文件,如果文件已存在,则抛出异常;如果文件不存在,则创建新文件。'b'
以二进制模式打开文件,用于处理二进制数据(例如图片、视频等)。-
't'
以文本模式打开文件(默认模式),用于处理文本数据。
with open(file_path, mode) as file:
# 执行文件操作
在with open
语句块中,你可以执行与文件相关的操作,例如读取文件内容或写入数据到文件中。当退出with
语句块时,文件将自动关闭,无论代码是否引发异常。
这种写法可以确保在处理文件时始终正确地关闭文件,避免资源泄露。它是一种推荐的做法,尤其在处理大量文件或复杂的文件操作时更为重要。
以下是一个使用with open
读取文件的示例:
with open('file.txt', 'r') as file:
content = file.read()
print(content)
在上述示例中,文件被以只读模式打开,并读取文件内容到变量content
中。当代码块执行完毕时,文件会自动关闭。
使用with open
可以简化文件操作的代码,并确保文件在处理完毕后被正确关闭,提高代码的可读性和可维护性。
当使用with open
打开文件时,可以通过指定encoding
参数来指定字符编码。字符编码用于将文件中的字节序列解码为字符串,或将字符串编码为字节序列。
2.2 encodeing
指定字符编码
以下是使用with open
指定字符编码的示例:
with open('file.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
在上述示例中,文件以只读模式打开,并使用UTF-8字符编码读取文件内容。你可以根据文件的实际字符编码来指定encoding
参数,例如UTF-8、GBK等。
请注意,字符编码是一个重要的概念,特别是当处理包含非ASCII字符的文本文件时。确保选择正确的字符编码,以避免乱码或解码错误的情况发生。
如果不指定encoding
参数,默认情况下会使用系统的默认字符编码。但是,为了确保正确处理不同编码的文件,建议始终明确指定字符编码。
2.3 with open "r"
只读模式常用方法
在只读模式下,文件对象支持以下常用方法:
1. `read(size=-1)`: 读取文件中的内容。如果指定了`size`参数,则最多读取`size`个字符(或字节),否则读取整个文件内容。返回一个字符串(或字节串,如果以二进制模式打开文件)。
2. `readline(size=-1)`: 读取文件中的一行内容。如果指定了`size`参数,则最多读取`size`个字符(或字节),否则读取一整行。返回一个字符串(或字节串,如果以二进制模式打开文件)。
3. `readlines(hint=-1)`: 读取文件中的所有行,返回一个包含所有行的列表。如果指定了`hint`参数,则最多读取`hint`个字节(或字符)。
4. `tell()`: 返回当前文件指针的位置(以字节为单位)。
5. `closed`: 一个布尔值,指示文件是否已关闭。
PS: 如果使用readlines()
方法读取二进制文件,返回值将是一个包含所有行的列表,每一行都是字节串(bytes)的形式。每个字节串表示文件中对应行的二进制数据。
2.4 with open "w"
写模式常用方法
在写模式下,文件对象支持以下常用方法:
1. write(str): 将字符串写入文件。
2. writelines(sequence): 将字符串序列写入文件。序列可以是一个列表或迭代器,每个元素都是要写入文件的字符串。
3. flush(): 将缓冲区的数据立即写入文件,而不是等到缓冲区满或文件关闭时才写入。
2.5 with open 判断文件属性方法
with open('dream.jpg', 'w', encoding='utf-8') as f:
print(f'可读性:{f.readable()}')
print(f'可写性:{f.writable()}')
print(f'是否编码格式:{f.encoding}')
# 可读性:False
# 可写性:True
# 是否编码格式:utf-8
【三】列表生成式
3.1 列表生成式的用法
列表推导式(List comprehension)是一种在编程语言中常见的语法结构,用于创建新的列表。它的作用是简化列表的创建过程,并且可以通过对原始列表的元素进行处理和筛选来生成新的列表。
使用列表推导式可以在一行代码中完成对列表的操作,包括筛选元素、对元素进行处理或转换等。列表推导式通常由方括号 [] 包围,其中包含一个表达式和一个或多个迭代器,用于指定要处理的原始列表的元素以及对元素的处理方式。
下面是一个使用列表推导式创建新列表的示例,假设有一个包含整数的列表,我们想要创建一个新列表,其中包含原列表中所有大于 5 的元素的平方:
1.
original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_list = [x**2 for x in original_list if x > 5]
在这个示例中,列表推导式 [x**2 for x in original_list if x > 5]
通过遍历原列表 original_list
中的元素,并筛选出大于 5 的元素进行处理。对于每个满足条件的元素,表达式 x**2
会计算其平方,并将结果添加到新列表 new_list
中。最终,new_list
的值为 [36, 49, 64, 81, 100]
。
让每个元素执行相同的操作
list1 = [' dog', 'cat ', ' sheep ']
new_list = [i.strip() for i in list1]
print(new_list)
总而言之,列表推导式提供了一种简洁的语法来创建新的列表,并且可以通过对原列表的元素进行处理和筛选来生成新的列表。它可以提高代码的可读性和简洁性,并在处理列表数据时提供了便利的方法。
【四】字典生成式
4.1 字典生成式的用法
字典生成式(Dictionary comprehension)是一种用于创建新字典的语法结构,类似于列表生成式。它可以简化创建字典的过程,并在一行代码中实现对原始字典的操作。
字典生成式的语法结构与列表生成式相似,但使用花括号 {} 包围,并包含一个键值对表达式和一个或多个迭代器,用于指定要处理的原始字典的键值对以及对键值对的处理方式。每个键值对表达式由冒号 : 分隔键和值。
举个例子,假设有一个包含整数的字典,我们想要创建一个新字典,其中包含原字典中所有值大于 5 的键值对,并将值取平方作为新字典的值:
original_dict = {'a': 1, 'b': 6, 'c': 3, 'd': 8, 'e': 2}
new_dict = {key: value**2 for key, value in original_dict.items() if value > 5}
在这个例子中,字典生成式 {key: value**2 for key, value in original_dict.items() if value > 5}
通过遍历原字典 original_dict
的键值对,并筛选出值大于 5 的键值对进行处理。对于每个满足条件的键值对,表达式 value**2
会计算其值的平方,并将结果作为新字典 new_dict
的值。最终,new_dict
的值为 {'b': 36, 'd': 64}
。
通过字典生成式,我们可以使用简洁的语法来创建新字典,并对原始字典的键值对进行处理和筛选