4)某公司元旦联欢会的抽奖环节需要随机抽出中奖员工,请你编写名单提取函数get_emp_list(txt_path),获取员工列表(每个元素对应一名员工的编号和姓名字符串)。 已知:每个员工信息占一行,包括员工编号和员工姓名 要求: (1)应用异常处理结构,保证文件读取不因为编码格式错误异常 (2)能够正确读取,返回列表,不能正确读取返回None
时间: 2023-12-18 21:02:43 浏览: 64
以下是一个可能的实现:
```python
def get_emp_list(txt_path):
emp_list = []
try:
with open(txt_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line: # 跳过空行
continue
fields = line.split() # 假设编号和姓名之间用空格分隔
if len(fields) != 2: # 格式不符合要求
raise ValueError('员工信息格式错误')
emp_list.append(tuple(fields))
except (IOError, ValueError) as e:
print(f'读取员工列表失败: {e}')
return None
return emp_list
```
这个函数首先尝试打开指定路径的文件,如果成功则逐行读取文件内容。每行内容去掉首尾空白字符后,用空格分隔字符串。如果分隔后的结果不是两个字段,则抛出一个`ValueError`异常表示该行格式错误。如果读取文件时发生了IO错误或者格式错误,则捕获异常并返回`None`。
如果读取成功,则将每个员工的编号和姓名组成一个元组,加入到`emp_list`中,并最终返回该列表。
阅读全文