Python向文件中读入list数据

l=["A","B","C","D"]
 
f=open("k.txt","w")
 
f.writelines(l)
f.close()
<think>我们使用Python从文本文件读取列表。假设文本文件中的每一行代表一个列表项。 如果列表是简单的每行一个元素,我们可以直接读取每一行并去除换行符。 如果文本文件中的内容是以列表的形式存储的(例如,使用repr(list)写入的文件),我们可以使用ast.literal_eval来安全地解析。 这里我们考虑两种常见情况: 1. 每行一个元素,例如: apple banana cherry 2. 整个文件是一个有效的列表字面量,例如: ['apple', 'banana', 'cherry'] 下面分别给出两种情况的代码。 </think>### 从文本文件读取列表的 Python 解决方案 #### 方法 1:每行一个元素的简单列表 适用于每行存储一个元素的文本文件(如 `data.txt` 内容): ``` apple 123 True 3.14 ``` ```python # 读取每行为元素的列表 with open('data.txt', 'r') as file: # 去除每行末尾的换行符 data_list = [line.strip() for line in file] print(data_list) # 输出: ['apple', '123', 'True', '3.14'] ``` **代码解释**: 1. `open('data.txt', 'r')` 以只读模式打开文件 2. 列表推导式 `[line.strip() for line in file]` 逐行读取 3. `strip()` 移除每行末尾的换行符 `\n` 4. 自动处理文件关闭(`with` 语句) --- #### 方法 2:解析 JSON 格式列表 当文件存储的是标准 JSON 数组(如 `data.json` 内容): ```json ["apple", 123, true, 3.14] ``` ```python import json # 读取JSON格式的列表 with open('data.json', 'r') as file: data_list = json.load(file) print(data_list) # 输出: ['apple', 123, True, 3.14] (保留原始数据类型) ``` **代码解释**: 1. `json.load(file)` 自动解析 JSON 数据结构 2. 保留原始数据类型(数字、布尔值等) 3. 需要确保文件内容是有效的 JSON 格式 --- #### 方法 3:处理带分隔符的单行列表 当所有元素存储在一行用分隔符连接(如 `data.csv` 内容): ``` apple,123,True,3.14 ``` ```python # 读取单行分隔符分割的列表 with open('data.csv', 'r') as file: line = file.readline().strip() # 读取第一行 data_list = line.split(',') # 按逗号分割 print(data_list) # 输出: ['apple', '123', 'True', '3.14'] # 可选:转换数据类型 converted_list = [] for item in data_list: try: # 尝试转换为整数或浮点数 converted_list.append(int(item)) except: try: converted_list.append(float(item)) except: converted_list.append(item) print(converted_list) # 输出: ['apple', 123, 'True', 3.14] # 注意: 'True'仍然是字符串,需额外处理布尔值 ``` **代码解释**: 1. `readline()` 读取单行内容 2. `split(',')` 按指定分隔符拆分字符串 3. 类型转换部分展示了如何尝试转换数字类型 --- #### 方法 4:安全解析 Python 字面量列表 当文件存储 Python 标准列表表达式(如 `data_list.txt` 内容): ```python ['apple', 123, True, 3.14] ``` ```python import ast # 解析Python字面量列表 with open('data_list.txt', 'r') as file: data_str = file.read().strip() # 读取整个文件 data_list = ast.literal_eval(data_str) # 安全解析 print(data_list) # 输出: ['apple', 123, True, 3.14] (保留所有原始类型) ``` **代码解释**: 1. `ast.literal_eval()` 安全解析 Python 数据结构 2. 比 `eval()` 更安全(仅允许字面量,禁止执行代码) 3. 完美还原数字、布尔值等复杂类型 --- ### 关键注意事项 1. **文件路径**:如果文件不在当前目录,需提供绝对路径(如 `C:/folder/data.txt`) 2. **编码处理**:非 ASCII 文件需指定编码(如 `open(..., encoding='utf-8')`) 3. **大文件优化**:超大文件建议使用逐行读取避免内存溢出 4. **错误处理**:添加 `try/except` 捕获 `FileNotFoundError` 等异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@u@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值