Python初学者对文件内容排序报str无sort属性错误如何解决
报错原因
你直接调用str(number1)将整个列表转为字符串写入文件,读取后得到的content是字符串类型,sort()是列表专属方法,字符串没有该属性,因此触发AttributeError。此外直接写入列表字符串的格式也不方便后续解析为可用的数字序列。
完整实现代码
number1 = [5000, 300, 4, 1, 2] number2 = [19, 66, 8, 17, 100] # 1. 将两个列表分别写入文本文件,每个数字单独占一行方便读取 with open("numbers1.txt", "w") as f1: for num in number1: f1.write(f"{num}\n") with open("numbers2.txt", "w") as f2: for num in number2: f2.write(f"{num}\n") # 2. 读取第一个文件内容,转数字后排序,写回原文件 with open("numbers1.txt", "r+") as f1: # 读取每行内容,过滤空行后转为整数 nums1 = [int(line.strip()) for line in f1 if line.strip()] nums1.sort() # 清空文件后写入排序后的内容 f1.seek(0) f1.truncate() for num in nums1: f1.write(f"{num}\n") print("numbers1.txt排序结果:", nums1) # 3. 读取第二个文件内容,转数字后排序,写回原文件 with open("numbers2.txt", "r+") as f2: nums2 = [int(line.strip()) for line in f2 if line.strip()] nums2.sort() f2.seek(0) f2.truncate() for num in nums2: f2.write(f"{num}\n") print("numbers2.txt排序结果:", nums2) # 4. 合并两个排序后的列表,整体排序后写入新文件 combined_nums = nums1 + nums2 combined_nums.sort() with open("combined_sorted.txt", "w") as f_comb: for num in combined_nums: f_comb.write(f"{num}\n") print("合并排序结果:", combined_nums)
关键逻辑说明
- 写入数字时逐行存储,避免后续解析字符串的额外开销
- 读取内容后先通过列表推导式将字符串转为整数,再调用
sort()方法升序排序 - 写回排序后内容前先调用
seek(0)将文件指针移到开头,truncate()清空原有内容再写入新数据 - 合并两个列表后再次排序,保证最终合并文件的内容整体升序
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

