文件操作和异常

文件操作

一、读操作

1.read()调用read()会一次性读取文件的全部内容,可以反复调用read(size)方法,每次最多读取size个字符。
2.readline()
readline每次读取一行,并且自带换行功能,每一行末尾会读到\n。
3.readlines()
一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来。
4.循环读取
file句柄是一个可迭代的对象,因此可以循环读取文件中的内容,每次读一行。

二、写操作
1.write()
2.writelines()
file.writelines(seq) 把seq的内容全部写到文件中。

with
使用with方式操作文件,可以不关闭文件,会自动关闭文件。

os模块

1、重命名文件
os.rename()
2、删除文件
os.remove()
3、创建目录
os.mkdir()
4、创建多级目录
os.makedirs()
5、删除目录
os.rmdir()
6、删除多级目录
os.removedirs()
7、获取当前所在目录
os.getcwd()
8、获取目录列表
os.listdir()
9、切换所在目录
os.chdir()
10、判断文件或文件夹是否存在
os.path.exists()
11、判断是否为文件
os.path.isfile()
12、判断是否为目录
os.path.isdir()
13、获取绝对路径
os.path.abspath()
14.判断是否为绝对路径
os.path.isabs()
15、获取路径中的最后部分
os.path.basename()
16、获取路径中的路径部分
os.path.dirname()

异常

基本语法:

try:
	代码块
except 异常类型:
	代码块

捕获多个异常:

try:
	代码块
except 异常类型:
	代码块
except 异常类型:
	代码块

try:
	代码块
except (异常类型1,异常类型2……):
	代码块

捕获所有异常:

try:
	代码块
except:
	代码块


try:
	代码块
except Exception:
	代码块

else格式
如果程序没有抛出异常,则执行else中的语句。

try:
	代码块
except 异常类型 as 变量名:
	代码块
else:
代码块

finally格式
不管有没有抛出异常,最终都会执行finally的语句。

try:
	代码块
except 异常类型 as 变量名:
	代码块
else:
	代码块
finally:
	代码块

手动抛出异常
raise 异常类型(“描述信息”)

自定义异常:

class ShortException(Exception):
    def __init__(self,length,least_len):
        self.length=length
        self.least_len=least_len
    def __str__(self):
        return "您输入了{}个字符,最少要输入{}个字符".format(self.length,self.least_len)
t=input("请输入字符串")
try:
    if len(t)<10:
        raise ShortException(len(t),10)
except ShortException as f:
    print(f)
print(t)

设计模式

单例模式

class D():
    xins=None
    def __new__(cls, *args, **kwargs):
        if not cls.xins:
            cls.xins=object.__new__(cls)
        return cls.xins
    def __init__(self,name):
        self.name=name
zs=D("zs")
ls=D("ls")
print(zs.name)
print(zs is ls)

工厂模式

class Bmw():
    def run(self):
        print("宝马在跑")
class Benz():
    def run(self):
        print('奔驰在跑')
class Audi():
    def run(self):
        print("奥迪在跑")
class Factory():
    @staticmethod
    def makeCar(name):
        if name=="宝马":
            return Bmw()
        elif name=="奔驰":
            return Benz()
        elif name=="奥迪":
            return Audi()
a=Factory.makeCar("宝马")
b=Factory.makeCar("奔驰")
c=Factory.makeCar("奥迪")
a.run()
b.run()
c.run()

观察者模式

class Boss():
    def __init__(self):
        self.observers=[]
        self.status=""
    def attact(self,ob):
        self.observers.append(ob)
    def notify(self):
        for ob in self.observers:
            ob.update()
class Employee():
    def __init__(self,name,boss):
        self.name=name
        self.boss=boss
    def update(self):
        print("{},{}赶快工作".format(self.boss.status,self.name))
if __name__ == '__main__':
    ljc = Boss()
    dz = Employee("董震", ljc)
    sym = Employee("司扬眉", ljc)
    ljc.attact(dz)
    ljc.attact(sym)
    ljc.status = "李嘉诚回来了"
    ljc.notify()

策略模式

class CashNorm():
    def accept_money(self,money):
        return money
class Cash_rate():
    def __init__(self,rate):
        self.rate=rate
    def accept_money(self,money):
        return self.rate*money
class Cash_condition():
    def __init__(self,condition,ret):
        self.condition=condition
        self.ret=ret
    def accept_money(self,money):
        if money<self.condition:
            return money
        else:
            return money-money//self.condition*self.ret
class Context():
    def __init__(self,csh):
        self.csh=csh
    def getResult(self,money):
        return self.csh.accept_money(money)
if __name__ == '__main__':
    a={}
    a[0]=Context(CashNorm())
    a[1]=Context(Cash_rate(0.8))
    a[2]=Context(Cash_condition(300,50))
    while True:
        style=int(input("请输入优惠方式:"))
        if style>2:
            style=0
        money=float(input("请输入金额:"))
        print(a[style].getResult(money))
CSV(Comma-Separated Values)文件是一种常见的文本文件,其内容是由逗号分隔的值组成的数据。在编程,读写CSV文件是一种基础的文件操作。下面将分别介绍在Java如何读写CSV文件以及异常处理的相关内容。 ### 读取CSV文件 读取CSV文件通常会涉及到文件的打开、读取以及关闭操作。以下是使用Java进行这些操作的基本步骤: 1. 创建`BufferedReader`对象,用于从文件读取数据。 2. 使用循环和`readLine()`方法逐行读取文件。 3. 对于每一行,可以使用`String.split(",")`方法按逗号分隔符进行分割,得到字符串数组,其每个元素代表一列数据。 4. 对读取的数据进行处理。 5. 关闭`BufferedReader`对象。 ### 写入CSV文件 写入CSV文件的过程与读取类似,但方向相反: 1. 创建`PrintWriter`对象,用于向文件写入数据。 2. 使用循环逐个写入数据,可以使用`print()`和`println()`方法。 3. 对于每个写入操作,数据之间可以添加逗号作为分隔符,每写完一行数据后使用`println()`换行。 4. 关闭`PrintWriter`对象。 ### 异常处理 在文件操作,可能会遇到多种异常情况,如文件不存在、没有读写权限等。因此,异常处理是非常重要的一部分。在Java,可以使用`try-catch`语句块来处理可能发生的异常。 ### 示例代码 ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class CSVFileIO { public static void readCSV(String filePath) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filePath)); String line = null; while ((line = reader.readLine()) != null) { String[] values = line.split(","); // 处理每行的数据 } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void writeCSV(String filePath, String[][] data) { PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter(filePath)); for (String[] row : data) { for (int i = 0; i < row.length; i++) { writer.print(row[i]); if (i < row.length - 1) { writer.print(","); } } writer.println(); } } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } } ``` 在这个示例,`readCSV`方法展示了如何读取CSV文件,`writeCSV`方法展示了如何写入数据到CSV文件异常处理则是通过`try-catch-finally`块来实现的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值