python中的文件与异常的详解

 一,文件的相关问题

1,with open()方法的解释

当我们需要使用一个文件时,必须打开这个文件,哪怕是打印其内容。打开一个文件时,我们通常使用open()来打开这个文件,当python打开文件后,我们需要在合适的地方对它进行关闭,这就用到了close()方法,但是若是过早的使用close()方法,可能在代码运行过程中出现错误,若是不运行close()方法,会造成文件无法关闭,这看起来微不足道,但是有可能会使数据受损或者丢失,造成难以想象的后果,这时关键字with就发挥了他的作用。

with关键字的使用会在open()方法实施后,python自动的在适合的位置对文件进行关闭。

with open("demo.text")as f:
    pass

格式像上图一样,当打开文件后,将demo.txt赋值给f,方便以后的操作。

(1)open()调用时可以传入两个实参。第一个实参是在告诉python打开了什么文件,第二个实参则决定了接下来的模式。打开文件时可以通过第二个实参来调整 :写入模式(“w”)附加模式(“a”)读写模式(“r+”)以及读取模式(“r”),当不指定参数时,python默认以读取模式打开文件。

为了后续操作方便我指定demo.txt文件的内容为“hello world”

fileame="demo.txt"
with open(fileame,'w') as f:
    f.write("I love python.")
    f.write("Have a nice day.")

当我们进行上面的操作后,我们再打开demo.txt时会发现

I love python.Have a nice day.

被写入的字符串在一起,没有空格或者换行符将其隔开。这是因为write()方法不包含换行符,如果我们想要内容变得更加美观,我们可以选择在后面加上\n换行符进行换行。

(‘w’)模式会覆盖掉原文件的内容,如果我们不想覆盖,而是在原文件上对它进行叠加,我们需要进入(‘a’)附加模式,对其进行操作。

fileame="demo.txt"
with open(fileame,'a') as f:
    f.write("I love python.\n")
    f.write("Have a nice day.\n")

此时如果我们打开文件,就会发现文件变为了

hello world
I love python.
Have a nice day.

 它们会被添加在demo.txt的末尾。

(2)我们在open()一个文件时,对于文件的地址一定更要写对,不然python以没找到该文件的理由而报错。

我们若是想要更加准确的让python来获取该文件时,可以传入绝对文件路径来获取。

with open("text_demo/demo.txt")as f:
    pass

如上图可知,要在text_demo文件夹中找demo.txt。

二,异常的相关问题。

(1)处理ZeroDivisionError异常

当我们去将0作为除数时,会出现以上的异常,我们可以使用一些方法来解决这个异常,使得代码可以继续运行下去,而不是就此终止。

利用try-except(else)模块就可以解决这个问题

try:
    print(8/0)
except ZeroDivisionError:
    print("Are you kidding me?!")
下面是有else的情况
try:
    answer=8/0
except ZeroDivisionError:
    print("Are you kidding me?!")
else:
    print(answer)

当代码有错误时会运行expect的内容,而当代码无错误时可以输出运行结果(直接通过try的操作输出或者通过else的操作输出)。

这种方法可以运用到计算器里面去,以防异常使之崩溃。

这个模块可以大幅度提高你代码的安全性,以防不怀好意的黑客看见这个漏洞时对你的代码进行攻击,使其崩溃。

(2)处理FileNotFoundErrror异常问题

当我们打开一个不存在的文件时,就会触发这个异常,相同的我们可以通过try-except模块来处理异常。

现在假设demo.txt文件并不存在

try:
    with open('demo.txt') as f:
        r=f.read()
except FileNotFoundError:
    print(“Sorry , I can't found it.”)

这就完美的处理了这种情况,异常问题的处理可以为我们带来很大的便利,在以后的编程生活中相信你会深有体会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

下水道程序员

你的鼓励将是我奋斗的最大动力。

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

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

打赏作者

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

抵扣说明:

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

余额充值