您的位置:首页 > 编程语言 > Python开发

Python初学笔记-io流和异常

2017-09-25 20:44 281 查看
io流:

读写文件是最常见的IO操作。python内置了读写文件的函数。

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统完成的,现代操作系统不允许普通的程序直接对磁盘进行操作,所以,

读写文件就是请求操作系统打开一个文件对象通常称为文件描述符,然后,通过操作系统提供的借口从这个文件中读取数据,或者把数据写入这个文件对象

今天依然使用Java作对比

JAVA  字节流:

InputStream in=new FileInputStream("/Users/liupanpan/Desktop/生成代码/a/铜人.jpg");源文件路径

OutputStream out=new FileOutputStream("/Users/liupanpan/Desktop/生成代码/b/铜人.jpg");目标文件路径

byte b[]=new
byte[1024];

int len=0;

循环读取源文件,直到读取不到了为止

while(true){

len=in.read(b);

if(len == -1){

break;

}

out.write(b,0,len);

刷新

out.flush();

}

out.close();

in.close();

System.out.println("OK............");

JAVA 字符流:

BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("/Users/liupanpan/Desktop/生成代码/a/Demo.txt"),"utf-8"));

PrintWriter out=new PrintWriter(new OutputStreamWriter(new FileOutputStream("/Users/liupanpan/Desktop/生成代码/b/Demo.txt"),"utf-8"));

String str=null;

while(true){

str=in.readLine();

if(str==null){

break;

}

System.out.println(str);

out.println(str);

out.flush();

}

out.close();

in.close();

System.out.println("OK.............");
内容差不多,可以参考上面
接下来是Python的io流

Python中的io流相比Java中要简便很多具体看下面

语法open()

Python中无论是读取源文件还是写入新文件都是用同一个方法具体使用方法接下里介绍

f=open("/Users/liupanpan/Desktop/生成代码/a/Demo.txt")
of=open("/Users/liupanpan/Desktop/生成代码/b/Demo.txt",'w')
for line in f:
of.write(line)
print("OK")

可以明显的看出,Python同样是读写文件,代码量却相比Java少了很多,那这都是因为open()方法的灵活性,可以明显的看到第二行的open方法在后面比第一个多了一个参数,它主要控制了open的作用

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
这也是Python中的io流简便的原因了,除此以外open中还有其他的参数,例如encoding,主要用来调节编码格式,就不细说了。

异常:

class Aex(Exception):
def __str__(self):
return "Aex"
class Bex(Exception):
def __str__(self):
return "Bex"
class Cex(Exception):
def __str__(self):
return "Cex"
n=int(input("请输入整数:"))
try:
if n == 1:
raise Aex()
if n == 2:
raise Bex()
if n == 3:
raise Cex()
print("OK")
except(Aex,Bex,Cex) as e:
print(e)

在异常方面跟Java没多大差异,这里就主要说下区别了

1.语法

在Python中try的全语法是

try:

except:

else:

finally:

相比Java来说except就是Java里的catch,还有就是多了一个else,这个else呢就是执行过try中的代码,但是没有        报异常时执行,跟except刚好相反

2.多异常处理方式

在Java中多异常的处理方式在jdk1.7的版本以前都是以多个catch处理,当jdk版本为1.7以及以上时,Java提供了
另一种方式catch(A | B | C e),而Python中的方式与Java的第二种方式有些类似,为except(A,B,C) as e

其他的就你没什么了,那今天的笔记就到这了!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: