1.文件的输入输出
open(file,[option])
r 只读模式,文件不存在时会报错。
w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件。
x 写入模式,文件存在会报错,文件不存在则会新建文件。
a 追加写入模式,不清空之前的文件,直接将写入的内容添加到后面。
b 以二进制模式读写文件,wb,rb,ab。
+ 可读写模式,r+,w+,x+,a+,这几种模式还遵循了r,w,x,a的基本原则。
f=open("test.txt","r")
f=open("test.txt","w")
f=open("test.txt","x")
f=open(r"E:\learn\test.txt","w")
f=open("E:\\learn\\test.txt","w")
'''
#内容
aaabbb
人生苦短,我用Python
#编码
f=open("test.txt","r+") #加上+号,可以读的权限
f.read() #Python读文件,读完需要重置光标或者重新打开一次文件
'''
f.read(size)
'''size是可选的数值,指定字符串长度,如果没有指定size或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时就会产生问题,反之就尽可能大的size读取和返回数据,如果到了文件末尾,会返回空字符串。
'''
>>> f.read(2)
'aa'
f.readline()
'''字符串结尾会自动加上一个换行符\n,只有当文件最后没有以换行符结尾时,这一操作才会被忽略,这样返回值就不会有混淆。如果返回空字符串,表示到达率文件末尾,如果是空行,就会描述为\n,一个只有换行符的字符串。
'''
>>> f.readline()
'aaabbb\n'
>>> f.readline()
'人生苦短,我用Python'
f.readlines()
'''可以通过列表索引的方式将文件的每一行的内容输出。
可以通过for循环迭代输出每一行的信息。'''
>>> f.readlines()
['aaabbb\n', '人生苦短,我用Python']
f.write()
'''
>>> f=open("test.txt","w+")
>>> f.write("test")
4
>>> f.flush()
'''
f.writelines()
'''
>>> f=open("test.txt","w+")
>>> li=["life","is","short",",you","need","python"]
>>> f.writelines(li)
>>> f.flush()
>>> f.read()
''
>>> f.seek(0)
0
>>> f.read()
'lifeisshort,youneedpython'
'''
f.flush()
f.close()
f.tell()
>>> f.tell()
28
f.seek(offset,from)
>>> f.seek(0)
0
>>> f.seek(0,0)
0
closed
>>> f.closed
False
mode
>>> f.mode
'w+'
name
>>> f.name
'test.txt'
encoding
>>> f.encoding
'cp936'
with open('文件名') as f:
f.read()
'''
#扩展操作
>>> with open("test.txt","w+") as f:
f.write("哈哈") #无需flush,自动关闭IO
2
'''
2.异常语法
try:
suite1
except exception1:
suite2
except (exception2,exception3):
suite3
except exception4 as reason:
suite4
except:
suite5
else:
suite5
finally:
suit6
'''
注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。
所有错误类型都继承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
'''
'''
#coding:
try:
b%d
##except NameError:#参数未定义
##except TypeError:#类型错误
except Exception:#异常基类,捕捉所有的异常
print("报错了")
else:#代码没有报错会执行
print("没有错误")
finally:#不管报不报错,都会执行
print("不管你报不报错,我都要执行")
a=1
'''
try:
fun()
except Exception as e:
raise Exception
except ImportError as e:
raise ImportError
finally:
pass
'''
在上面的例子中,下面的ImportError就不会被抛出,应为ImportError继承Exception,但是可以把Exception放在后面是可以的
e可以得到系统给出的报错信息
'''
'''
try:
a=input("输入数字:")
if a.isdigit():
print()
else:
raise TypeError
except Exception:#异常基类,捕捉所有的异常
print("你输入错误")
'''
assert
'''
测试表示式,其返回值为假,就会触发异常
'''
assert 1==1
assert 1==2
'''
>>> assert 1>2 #断言,如果返回False就会报错
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
assert 1>2
AssertionError
'''