PyCharm | os.path.basename()作用

博客介绍了在Python中获取path最后文件名的相关内容,若path以/或\\结尾会返回空值,还能返回不包括后缀的最后文件名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

os.path.basename(),返回path最后的文件名。若path以/或\结尾,那么就会返回空值。

model_name = os.path.basename(model_path).split('.')[0]

这里会返回最后文件名(不包括后缀)

非常抱歉,我之前给出的建议中的load_workbook()`函数的`use_iterators`参数是错误的。实际上,`use_iterators`参数在`load_workbook()`函数中是不存在的。 对于你的问题,可以尝试以下优化方法: 1. 使用`iter_rows()`方法:使用`iter_rows()`方法一次性获取多个行,然后进行批量操作。这样可以减少对单个单元格的操作次数。 2. 使用内存映射模式:对于大型xlsx文件,使用内存映射模式可以减少内存消耗。你可以尝试使用`openpyxl`库的`openpyxl.workbook.Workbook`函数来打开文件,这样可以使用内存映射模式。 下面是更新后的代码: ```python from openpyxl import load_workbook import os def process_xlsx_file(aaaaa): # 使用内存映射模式打开xlsx文件 wb = load_workbook(filename=aaaaa, read_only=True) print('检查点1') # 删除名为"文献导出—Excel格式"的表格 if "文献导出—Excel格式" in wb.sheetnames: wb.remove(wb["文献导出—Excel格式"]) print('检查点2') # 获取名为"拆分结果"的表格 sheet = wb["拆分结果"] print('检查点3') # 处理U列的数据 max_row = sheet.max_row rows = sheet.iter_rows(min_row=2, max_row=max_row, values_only=True) new_rows = [] # 存储处理后的行数据 for row in rows: # 从第2行开始,跳过表头 cell_value = row[20] # U列的索引为20 # 如果U列单元格中不包含字符"[J]",则跳过该行 if cell_value is None or "[J]" not in cell_value: continue print('检查点4') # 删除U列单元格中的空格 row = list(row) # 将元组转换为列表以修改值 row[20] = cell_value.replace(" ", "") print('检查点5') # 分割U列单元格,并将分割结果保存在U列后面的列中,分隔符为"." split_values = cell_value.split(".") row.extend(split_values) print('检查点6') new_rows.append(row) # 保存处理后的xlsx文件 wb = load_workbook(filename=aaaaa) # 重新加载文件以进行写入操作 sheet = wb["拆分结果"] sheet.delete_rows(2, max_row) # 删除原有数据 for row in new_rows: sheet.append(row) file_name = os.path.basename(aaaaa) # 获取原文件名 new_file_name = file_name.split(".xlsx")[0] + "引证文献标准化.xlsx" # 新文件名 wb.save(new_file_name) print('检查点7') aaaaa = r'D:\【科研】\【全学科引文数据集】\【3.拆分引证文献】\AAAtest.xlsx' process_xlsx_file(aaaaa) ``` 请注意,这些优化方法可能会对代码的可读性和可维护性造成一些影响,因此在优化代码之前,请确保你对代码进行了适当的测试和验证。如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值