解决Python写txt等文件时内容为空

当Python操作txt文件时出现内容为空的情况,可能是因为没有正确地打开和关闭文件,或者在open后异常未被妥善处理导致。解决方法是使用with语句,它会自动处理文件关闭和异常,确保文件内容能正确写入。

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

原因

没有正确的打开、关闭文件,只使用了open,没有使用close;
或者虽然程序中写了close,但有时会在open阶段发生异常,异常抛出后或者在异常处理中最终并没有执行close,导致文件内容为空。

解决

使用with open as f:这个语句底层封装了对文件的关闭、异常处理,不需要自己写close和异常处理,而且能够保证文件一定能够正常关闭。

with open('test.txt','w') as f:
    f.write('123')
### 如何用Python读取TXT文件的最后一行 为了实现这一目标,可以采用多种方法来处理文本文件并获取最后一行的内容。以下是几种常见的方式: #### 方法一:逐行读取直到最后 这种方法通过遍历整个文件直至到达最后一行,适合小型文件。 ```python def get_last_line(filename): with open(filename, 'r', encoding='utf-8') as f: lines = f.readlines() if len(lines) > 0: last_line = lines[-1].strip() return last_line else: return "File is empty" ``` 此函数打开指定名称的文件,并将其所有行存储在一个列表中;如果该列表不为,则返回最后一项作为最后一行[^1]。 #### 方法二:使用`seek()`和`readline()` 对于较大的文件,为了避免一次性加载全部内容到内存中,可以通过移动指针位置的方法更高效地找到最后一行。 ```python def get_last_line_efficiently(filename): with open(filename, 'rb') as f: try: # Move to the end of file f.seek(-2, os.SEEK_END) while f.read(1) != b'\n': f.seek(-2, os.SEK_CUR) except OSError: f.seek(0) last_line = f.readline().decode('utf-8').strip() return last_line or "File is empty" ``` 这段代码尝试从文件结尾向前寻找换行符的位置,从而定位到最后一条记录。注意这里是以字节模式(`'rb'`)打开文件以便能够执行负向偏移操作。 这两种方式都可以有效地解决问题,具体选择取决于实际应用场景下的性能需求以及文件大小等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FarryNiu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值