前言:
此时兄弟们对“open函数打开文件失败原因是”可能比较关心,看官们都想要分析一些“open函数打开文件失败原因是”的相关知识。那么小编在网上汇集了一些有关“open函数打开文件失败原因是””的相关文章,希望我们能喜欢,小伙伴们一起来了解一下吧!一 异常
错误的代码或输入会引发异常.发生异常时,程序立即停止.
num1=7
num2=0
print(num1/num2)
这将产生ZeroDivisionError异常
ZeroDivisionError:division by zero
常见的异常以及引发的原因:
ImportError:无法引入模块或包
IndexError:下标索引超出序列边界.
NameError:使用一个还未赋予对象的变量.
SyntaxError:语法错误
TypeError:传入的对象类型与要求不符.
ValueError:传入一个不被期望的值,即使类型正确
KeyError:试图访问字典里不存在的键
IOError:输入输出异常
python还有一些内置的异常,如:ZeroDivisionError和OSError
第三方库也有自己的异常.
二 异常处理
try/except
try块包含可能会引发异常的代码.如果发生该异常,try块中的代码将停止执行.并且except块中的代码将被运行.如果没有发生错误,except块中的代码不会运行.
try语句可以有多个不同的except块来处理不同的异常.可以使用圆括号将多个异常放在一起.
try:
variable=10;
print(varible+"hello")
print(variable/2)
except ZeroDivisionError:
print("divided by zero")
except (ValueError,TypeError):
print("Error occured")
结果:Error occured
没有指定任何异常的except语句将捕获所有错误.但是,这样会捕捉到意想不到的错误并隐藏编程错误.
例如:
try:
word="spam"
print(word/0)
except:
print("发生错误")
结果:发生错误
●在处理用户输入时,异常处理特别有用.
三 finally语句
为了确保某些代码不管发生什么错误都运行,可以使用finally语句.finally语句放置在try/except语句的底部.finally语句中的代码总是在try中的代码执行之后运行,可能在except代码块中运行.
try:
print("hello")
print(1/0)
except ZeroDivisionError:
print("divided by zero")
finally:
print("这段代码无论如何都会运行")
结果:
四 引发异常
raise 人为主动引发异常
print(1)
raise ValueError
print(2)
结果:
需要指定引发异常的类型. 引发异常后的代码就不会执行了
●引发异常可以提供一些异常的描述
name="123"
raise NameError("Invalid name!")
结果:
NameError:Invalid name!
●在except块下,raise语句可以在没有参数的情况下使用来重新引发发生的异常.
try:
num=5/0
except:
print("An error occured!")
raise
结果:
五 断言
assert 后边的语句为真,则正常运行.如果assert后边的语句为假,则会触发AssertionError
pint(1)
assert 2+2==4
print(2)
assert 1+1==3
print(3)
结果:
程序员经常在函数的开始处放置断言来检查有效的输入,并且在函数调用之后检查有效的输出.
●如果断言失败,assert可以接受第二个传递给AssertionError的参数.
temp=-10
assert (temp>=0),"Colder than absolute zero!"
结果:
AssertionError:Colder than absolute zero!
AssertionError异常可以像使用try-except语句的任何其他异常一样被捕获和处理,但是如果不处理,这种类型的异常将终止程序.
六 打开文件
使用open函数打开文件.
myfile=open("filename.txt")
open函数的参数是文件的路径.如果文件与程序位于同一目录,可以直接使用文件名称.
◆可以通过向open函数应用第二个参数来指定用于打开文件的模式.
参数"r":在读取模式下打开,这是默认设置(read)
参数"w":写入模式,用于重写文件的内容(write)
参数"a":追加模式,用于将新内容添加到文件末尾
将"b"添加到某个模式中文件将以二进制模式打开它,该模式用于非文本文件(如图像和声音视频文件)
open("filename.txt","w") #写模式
open("filename.txt","r") #读模式
open("filename.txt","wb") #二进制写入模式
文件被打开和使用后要关闭它.通过文件对象的close方法进行关闭.
file=open("filename.txt","w")
file.close() #关闭文件
七 读文件
可以使用read方法读取以文本模式打开的文件的内容.
file=open("filename.txt")
cont=file.read()
print(cont)
file.close()
这将打印文件"filename.txt"的所有内容
如果只要读取文件的一部分内容,你可以提供一个数字作为read方法的参数.决定要读取的字节数.
可以多次调用来读取同一个文件对象,逐字节读取更多的内容.如果没有参数,read返回文件的其余部分内容.
file=open("filename.txt","r")
print(file.read(16))
print(file.read(4))
print(file.read(4))
print(file.read())
file.close()
★在读取完文件中的所有内容之后,如果试图从该文件进一步读取,将会返回一个空字符串,因为你正试图从文件末尾进行读取.
file=open("filename.txt")
file.read()
print("Re-reading")
print("file.read()")
print("Finished")
file.close()
结果:
Re-reading
Finished
★要检索文件中的每一行,可以使用readlines方法返回一个列表.其中每个元素是文件中的一行.
例如:
file=open("filename.txt")
print(file.readlines())
file.close()
结果:
['Line 1 text \n','Line 2 text \n','Line 3 text ']
你可以使用for循环遍历文件中的行:
file=open("filename.txt","r")
for line in file:
print(line)
file.close()
结果:
Line 1 text
Line 2 text
Line 3 text
在输出中,行由空行分隔,因为print函数在其输出结束时自动添加新行.
八 写文件
write方法,将字符串写入文件.
file=open("filename.txt","w")
file.write("This has been written to a file")
file.close()
file=open("filename.txt","r")
print(file.read())
file.close()
结果:
This has been written to a file
"w"模式,如果文件不存在,将创建一个文件.
当以写入模式打开文件时,文件的原有内容将被删除.
file=open("filename.txt","r")
print("Reading initial contents")
print(file.read())
print("Finished")
file.close()
file=open("filename.txt","w")
file.write("Some new text")
file.close()
file=open("filename.txt","r")
print("Reading new contents")
print(file.read())
print("Finished")
file.close()
结果:
Reading initial contents
some initial text
Finished
Reading new contents
Some new text
Finished
文件的内容被覆盖.
★如果写入成功的话,write方法返回文件的字节数.
msg="Hello world!"
file=open("newfile.txt","w")
amount_written=file.write(msg)
print(amount_written)
file.close()
结果:12
九 文件操作
要确保文件在使用后始终关闭.一种方法是使用try和finally:即使发生错误,这也可以确保文件始终关闭.
try:
f=open("filename.txt")
print(f.read())
finally:
f.close()
还有另外一种方法:
with open("filename.txt") as f:
print(f.read())
这将创建一个零时变量f,该变量只能在with语句的缩进块中访问.
在with语句结束时,即使文件内部发生异常,文件也会自动关闭.
标签: #open函数打开文件失败原因是