菜鸟学python之基础篇

菜鸟学python之基础篇

Error和Exception

Error和Exception都是Python中异常处理的重要概念。

Error表示程序本身出现错误
Exception表示程序运行过程中可能出现的异常情况

Python中的异常(Exception)是当程序运行过程中遇到错误或者异常情况时,程序可以捕获并处理这些错误或者异常。异常是程序在执行过程中产生的错误信息,它可以提供有关错误发生的详细信息,以便程序员能够更好地解决问题。

异常处理

Python中异常处理通过try-except语句实现。try-except语句的语法格式如下:

try:
    # 可能出现异常的代码
except [ErrorType1[, ErrorType2[,...,ErrorTypeN]]]:
    # 处理异常的代码
else:
    # 没有异常时执行的代码
finally:
    # 无论是否出现异常都会执行的代码

try-except语句的执行流程如下:

  1. 执行try子句中的代码,如果代码出现异常,则try子句中与该异常对应的except子句会被执行,try子句继续执行
  2. 如果try子句中没有与异常对应的except子句,则异常会被传递给上层调用者
  3. 如果try子句中没有异常,则except子句会被忽略
  4. 无论try子句中是否出现异常,finally子句都会被执行

异常类型

Python中的异常类型有很多,下面列举一些常见的异常类型:

异常类型描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)已经完成执行
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除以零
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF标志
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
ImportError导入模块失败

Python中的异常分为两种:已检查异常(Checked Exceptions)和未检查异常(Unchecked Exceptions)。已检查异常需要程序员在代码中显式处理,而未检查异常则不需要。已检查异常包括IOError、ValueError、KeyError等,这些异常在程序中可以通过try-except语句捕获并处理。未检查异常包括SystemError、MemoryError等,这些异常通常是由于程序本身出现错误而导致的,无法通过try-except语句捕获。

在Python中,可以使用try-except语句捕获并处理异常。try块包含可能引发异常的代码,而except块包含处理异常的代码。如果try块中的代码引发异常,程序会跳转到except块,执行except块中的代码,然后继续执行程序的其他部分。

try:
   # 可能引发异常的代码
   result = 10 / 2
   print(result)
except ZeroDivisionError:
   # 处理异常
   print("除数不能为零")
except TypeError:
   # 处理异常
   print("类型错误")

File

在Python中,file是一个内置的文件对象,用于表示一个文件或文件的指针。文件对象可以用于读取、写入、关闭和 seek 文件。

使用open()函数可以创建一个file对象,该函数需要两个参数:文件名和模式。文件名指定要打开的文件的位置,模式指定如何打开文件。例如,下面的代码使用open()函数打开一个名为test.txt的文件,并以读取模式打开:

# 打开文件
file = open("test.txt", "r")
# 读取文件
content = file.read()
# 关闭文件
file.close()
# 打开文件
file = open("test.txt", "w")
# 写入文件
file.write("hello world")
# 关闭文件
file.close()

open()

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(Python 3 不支持)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

属性

name:返回文件名
mode:返回文件模式
closed:返回文件是否已关闭
fileno():返回文件描述符
encoding:返回文件编码方式

方法

read():读取文件内容
readline():读取一行内容
readlines():读取所有行内容
write():写入文件内容
close():关闭文件
seek():移动文件指针
tell():获取文件指针位置
flush():刷新文件缓存

标准库

Python的标准库是Python中最基础、最常用的库之一,包含了Python中最常用的模块和函数。标准库提供了丰富的功能和工具,使得Python在各种场景下都能发挥巨大作用。

Python的标准库包含了许多模块和包,每个模块和包都有其特定的功能和用途。例如,os模块提供了与操作系统交互的功能,math模块提供了数学计算的功能,re模块提供了正则表达式的功能,json模块提供了JSON编码和解码的功能等。

下面是一些常见的Python标准库模块和包:

  • os:提供与操作系统交互的功能
  • sys:提供与Python解释器相关的功能
  • math:提供数学计算功能
  • re:提供正则表达式功能
  • json:提供JSON编码和解码功能
  • urllib:提供访问URL的功能
  • time:提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等
  • datetime: 提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等
  • random:提供了生成随机数的函数,例如生成随机整数、随机字符串等

os模块示例

Python 的 os 模块提供了与操作系统交互的功能,可以用来获取环境变量、修改目录、获取文件信息等。下面是一些使用 os 模块的示例:

1. 获取环境变量:
import os

# 获取一个环境变量
env_var = os.environ.get('PATH')
print(env_var)
2. 修改目录:
import os

# 创建一个目录
os.mkdir('my_directory')

# 修改目录
os.chdir('my_directory')

# 删除目录
os.rmdir('my_directory')
3. 获取文件信息:
import os

# 获取文件大小
file_size = os.path.getsize('example.txt')
print(file_size)

# 获取文件名
file_name = os.path.basename('example.txt')
print(file_name)

# 获取文件路径
file_path = os.path.dirname('example.txt')
print(file_path)
4. 获取当前目录:
import os

# 获取当前目录
current_dir = os.path.abspath(os.path.curdir)
print(current_dir)
5. 获取文件夹内容:
import os

# 获取文件夹内容
folder_content = os.listdir('my_folder')
print(folder_content)
6. 获取命令行参数:
import os

# 获取命令行参数
cmd_args = os.sys.argv
print(cmd_args)
7. 获取用户输入:
import os

# 获取用户输入
user_input = input('请输入内容:')
print(user_input)
8. 获取终端大小:
import os

# 获取终端大小
terminal_size = os.get_terminal_size()
print(terminal_size)
9. 获取进程信息:
import os

# 获取进程信息
pid = os.getpid()
print(pid)
10. 获取当前时间:
import os

# 获取当前时间
current_time = os.get_terminal_size()
print(current_time)
11. 获取文件属性:
import os

# 获取文件属性
file_attr = os.stat('example.txt')
print(file_attr)
12. 获取文件所有者:
import os

# 获取文件所有者
file_owner = os.stat('example.txt').st_uid
print(file_owner)
13. 获取文件所有者组:
import os

# 获取文件所有者组
file_group = os.stat('example.txt').st_gid
print(file_group)
14. 获取文件所有者权限:
import os

# 获取文件所有者权限
file_permission = os.stat('example.txt').st_mode
print(file_permission)
15. os.path

import os

# 获取文件名
file_name = os.path.basename('/path/to/file.txt')
print(file_name)

# 获取文件扩展名
file_ext = os.path.splitext('/path/to/file.txt')[1]
print(file_ext)
print(file_ext[1:])


# 构建文件路径
file_path = os.path.join('/path/to/dir', 'file.txt')
# file_path = os.path.join('path','to','dir', 'file.txt')
print(file_path)


# 获取目录路径
dir_path = os.path.dirname('/path/to/file.txt')
print(dir_path)

# 获取文件名
file_name = os.path.basename('/path/to/file.txt')
print(file_name)

# 获取文件扩展名
file_ext = os.path.splitext('/path/to/file.txt')[1]
print(file_ext)

datetime模块示例

Python 的 datetime 模块提供了与日期和时间相关的功能,可以用来获取当前日期和时间、计算时间间隔、格式化日期和时间等。


import datetime

# 获取当前日期和时间
current_time = datetime.datetime.now()
print(current_time)


# 获取两个日期和时间
time1 = datetime.datetime(2023, 11, 20, 12, 0, 0)
time2 = datetime.datetime(2023, 11, 20, 15, 30, 0)

# 计算时间间隔
time_difference = time2 - time1
print(time_difference)


# 格式化日期和时间
formatted_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(formatted_time)

# 获取日期和时间字符串
time_str = '2023-11-20 12:00:00'

# 解析日期和时间字符串
parsed_time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
print(parsed_time)
print(parsed_time.year,
      parsed_time.month,
      parsed_time.day,
      parsed_time.hour,
      parsed_time.minute,
      parsed_time.second)

re模块示例

Python 的 re 模块提供了正则表达式的功能,可以用来匹配和处理文本字符串。

常用的函数和类
FunctionDescriptions
re.search()搜索字符串中是否匹配某个模式,返回匹配对象。
re.findall()搜索字符串中所有匹配某个模式的字符串,返回列表。
re.finditer()搜索字符串中所有匹配某个模式的字符串,返回迭代器。
re.sub()替换字符串中的所有匹配某个模式的字符串,返回替换后的字符串。
re.subn()替换字符串中的所有匹配某个模式的字符串,返回替换后的字符串和替换次数。
re.split()将字符串按照某个模式分割成多个子字符串,返回列表。
re.escape()将正则表达式中的特殊字符转义,返回字符串。
re.compile()将正则表达式编译成正则表达式对象,方便多次使用。
re.error正则表达式错误信息。
re.constants正则表达式相关常量的模块。
re.Pattern正则表达式模式对象,可以进行匹配和查找操作。
re.Match匹配对象,包含匹配的文本、匹配的子串等信息。
re.Group子串对象,包含匹配的子串信息。
re.TypedString带有类型信息的字符串对象,可以指定字符串的类型。
re.TypedPattern带有类型信息的正则表达式模式对象,可以指定正则表达式的类型。
模式
  • .:匹配任意字符,除了换行符。
  • *:匹配零个或多个字符。
  • +:匹配一个或多个字符。
  • ?:匹配零个或一个字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • []:匹配括号内的任意字符。
  • |:匹配多个模式之一。
  • \:转义字符,用于匹配特殊字符。
  • \d:匹配数字。
  • \D:匹配非数字。
  • \s:匹配空白字符(空格、制表符和换行符)。
  • \S:匹配非空白字符。
  • \w:匹配单词字符(字母、数字和下划线)。
  • \W:匹配非单词字符。
  • \b:匹配单词边界。
  • \B:匹配非单词边界。
  • \z:匹配字符串的结尾。
  • \Z:匹配字符串的开头。
  • \n:匹配换行符。
  • \r:匹配回车符。
  • \t:匹配制表符。
  • \1…\9:匹配捕获组中的子串。
  • \10:匹配第10个捕获组中的子串。
常用的字符串操作函数
  1. str.replace():替换字符串中的子串。
  2. str.split():将字符串按照指定的分隔符分割成多个子字符串。
  3. str.join():将多个字符串按照指定的分隔符连接成一个字符串。
  4. str.find():查找字符串中是否包含子串,返回子串的索引。
  5. str.rfind():查找字符串中是否包含子串,返回子串的索引,从字符串的末尾开始查找。
  6. str.index():查找字符串中是否包含子串,返回子串的索引。
  7. str.rindex():查找字符串中是否包含子串,返回子串的索引,从字符串的末尾开始查找。
  8. str.startswith():检查字符串是否以指定的子串开始。
  9. str.endwith(): 检查字符串是否以指定的子串结束。
  10. str.strip():删除字符串两端的空白字符。
  11. str.lstrip():删除字符串左端的空白字符。
  12. str.rstrip():删除字符串右端的空白字符。
  13. str.upper():将字符串转换为大写。
  14. str.lower():将字符串转换为小写。
  15. str.capitalize():将字符串的第一个字符大写。
  16. str.count():计算字符串中子串出现的次数。
  17. str.findall():查找字符串中所有子串,返回一个列表。

import re

# 定义正则表达式
pattern = r'\d+'

# 获取文本字符串
text = 'There are 123 cats in the house.'

# 匹配数字
match = re.search(pattern, text)
print(match.group()) # 123

# 定义正则表达式
pattern = r'dog'
replacement = 'cat'

# 获取文本字符串
text = 'The dog ran away.'

# 替换字符串
new_text = re.sub(pattern, replacement, text)
print(new_text) # The cat ran away.


# 定义正则表达式
pattern = r'\w+'

# 获取文本字符串
text = 'Hello, world! How are you today?'

# 匹配所有字符串
matches = re.findall(pattern, text)
print(matches) # ['Hello', 'world', 'How', 'are', 'you', 'today']


# 定义正则表达式
pattern = r'\d+'

# 获取文本字符串
text = 'There are 123 cats in the house.'

# 匹配字符串位置
match = re.search(pattern, text)
print(match.start()) # 10

# 定义正则表达式
pattern = r'(dog|cat)'

# 获取文本字符串
text = 'The dog ran away.'

# 匹配字符串组
match = re.search(pattern, text)
print(match.group(1)) # dog


# 定义正则表达式
pattern = r'(dog|cat)\1'

# 获取文本字符串
text = 'The dog ran away. The cat sat down.'

# 匹配重复字符串
match = re.search(pattern, text)
print(match) # None


# 定义正则表达式
pattern = r'\d+'

# 获取文本字符串
text = 'There are 123 cats in the house.'

# 匹配字符串条件
match = re.search(pattern, text)
if match:
    print(match.group())
else:
    print('No match found')


# 定义正则表达式
pattern = r'(dog|cat)(\d+)'

# 获取文本字符串
text = 'The dog ran away. The cat sat down.'

# 匹配字符串条件组
match = re.search(pattern, text)
if match:
    print(match.group(1))
    print(match.group(2))
else:
    print('No match found')

random

Python 的 random 模块提供了生成伪随机数的功能,可以用来生成随机数、选择列表中的随机元素等。


import random, string

# 生成 1 到 10 之间的随机数
random_number = random.randint(1, 10)
print(random_number)

# 生成 0 到 1 之间的随机浮点数
random_float = random.random()
print(random_float)


# 定义一个列表
my_list = [1, 2, 3, 4, 5]

# 从列表中随机选择一个元素
random_element = random.choice(my_list)
print(random_element)


# 定义一个列表
my_list = [1, 2, 3, 4, 5]

# 打乱列表中的元素顺序
random.shuffle(my_list)
print(my_list)

# 定义一个字符集
characters = string.ascii_letters + string.digits

# 生成一个随机字符串
random_string = ''.join(random.choice(characters) for i in range(10))
print(random_string)

# 定义一个字符集
uppercase_letters = string.ascii_uppercase

# 生成一个随机大写字母字符串
random_uppercase_string = ''.join(random.choice(uppercase_letters) for i in range(10))
print(random_uppercase_string)

文章目录

菜鸟学python之基础篇

菜鸟学python之基础篇二

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

diagCar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值