列出今天写的脚本中用到的一些知识点

列出今天写的脚本中用到的一些知识点

1. 拼接路径

os.path.join(path1, path2, ....)

用途:将参数中的所有路径,用当前系统的路径拼接符进行拼接成完成一个路径。

场景:已知某个目录路径,该路径下有很多表格,需要获取这些表格的绝对路径。

root_dir = r'C:/demo' # 已知的目录路径
for excel in os.listdir(root_dir):
    excel_path = os.path.join(root_dir, excel)

2. 获取上一级目录

os.path.dirname(path)

用途:获取path的上一级目录

场景:已知一个文本的绝对路径,想要获取该文本所在的目录路径

file_path = 'C:/demo/file.txt'
file_dir = os.path.dirname(file_path)
# 输出:C:/demo

3. 获取路径中的最后一级文件夹名或文件名

os.path.basename(path)

用途:获取path中最后一级的文件夹名或文件名

场景:已知一个文本的绝对路径,只想要获取该文本的部分,不想要完整的路径

file_path = 'C:/demo/file.txt'
file_dir = os.path.basename(file_path)
# 输出:file.txt

4. 判断某个路径是否存在

os.path.exists(path)

用途:判断path这个路径是否存在,若不存在,则返回False;存在,则返回True

场景:想判断某个文件是否存在,再来决定是否要删除

file_path = 'C:/demo/file.txt'
if os.path.exists(file_path):
    print('文件存在,需要删除')
else:
    print('文件不存在,不需要删除')

5. 计算组数

场景:有100条数据,按20个为一组,问:共有几组?

total_num = 100
per_group_num = 20

# 写法1
group_num = total_num // per_group_num if total_num % per_group_num == 0 else total_num // per_group_num + 1

# 写法2
group_num = total_num // per_group_num + (total % per_group_num > 0)

# 写法3
import math
group_num = math.ceil(total_num / per_group_num)

解决这个问题的是思路是向上取整,写法1和写法2的区别就在2的代码量更少,而写法3的代码量在三个写法中是最少的,但从性能上来说,导入模块和调用函数的过程肯定是会比直接计算会更慢一点。

6. 获取表格的总行数

如果是使用pandas模块读取的表格,那获取表格的总行数的代码是df.index.stop

df = pd.read_excel(excel_path)
max_row = df.index.stop

7. 获取当前时间

可以用timedatetime来获取

import time
from datetime import datetime

# 使用time模块
cur_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

# 使用datetime
cur_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

8. 创建文件夹

使用os.mkdir(path)来创建文件夹,但如果文件夹已存在的话,会报FileExistsError错误。所以在创建之前,要先判断文件夹是否已存在。

dst_dir = 'C:/demo/dst_dir'
os.path.exists(dst_dir) or os.mkdir(dst_dir)

9. 递归创建文件夹

如果需要创建多级文件夹,即创建一个文件夹后,需要在该文件夹下再创建子文件夹,那么可以这样写:

dst_dir = 'C:/demo/parent_dir/child_dir'
os.path.exists(dst_dir) or os.makedirs(dst_dir)

10. 复制整个文件夹

如果想复制整个文件夹,包括该文件夹下的所有文件或子文件夹,可以使用shutil.copytree(src_path, dst_path)

src_path = 'C:/demo/src_dir'
dst_path = 'c:/demo2/'

# 将src_dir文件夹复制到demo2文件夹下
import shutil
shutil.copytree(src_path, dst_path)

这里要注意,假设目标文件夹如果已存在,则会出现报错,如果要覆盖已存在的目标文件夹,需要设置参数dirs_exist_ok=True

shutil.copytree(src_path, dst_path, dirs_exist_ok=True)

11. 获取表格某字段的数据,并转为列表

假设想获取demo表中column字段的所有值,并转为列表的形式,代码可以这样写:

import pandas as pd

df = pd.read_excel('demo.xlsx', usecols=['column'])
column_value_list = df['column'].to_list()

你可能感兴趣的:(python基础,python)