0x01 从文件中读取数据
读取整个文件
with open('1.txt') as file_ob:
contents = file_ob.read()
print(contents)
with会在文件不需要访问后,将其关闭;这样的输出最后会多一个空行,因为read()到达文件末尾会返回一个空字符串,而将空字符串打印出来时就会成为一个空行,可以使用rstrip()删除
文件路径
Linux ,macOs 使用斜杠
/
, Windows使用反斜杠\
,有绝对路径和相对路径。
逐行读取
filename = "1.txt"
with open(filename) as file_ob:
for line in file_ob:
print(line)
由于每行都有换行符,而print又会加上一个换行符,所以这样打印出来的会有很多空白行,所以可以改成下面的代码
filename = "1.txt"
with open(filename) as file_ob:
for line in file_ob:
print(line.rstrip())
创建一个包含文件各行内容的列表
使用with时,其作用域只有with这一小块代码块,要在with代码块外使用,则需要创建一个列表
filename = "1.txt"
with open(filename) as file_ob:
lines = file_ob.readlines()
for line in lines:
print(line.rstrip())
使用文件的内容
没什么好说的
filename = 'pi_30_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string)
print(len(pi_string))
打印文件的部分
filename = 'pi_30_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string[:52])
print(len(pi_string))
0x02 写入文件
写入空文件
filename = "1.txt"
with open(filename, 'w') as file_ob:
file_ob.write("AWWWWWW")
Python只能将字符串写入文本,如果要储存数值,要先转换为字符串
写入模式
‘w’: 写入模式 ,如果文件不存在则新建一个,存在则每次都清空再写入
‘r’: 只读模式
‘a’: 附加模式,不清空文件,再末尾追加
‘r+’: 读取和写入模式
0x03 异常
使用try-except代码块
try:
print(2/0)
except ZeroDivisonError:
print("U can't divide by Zero!")
如果try代码块中的代码没问题,那么将跳过except,若有问题,将执行其中代码,可以给用户一个清晰的提示。
else代码块
try:
print(2/0)
except ZeroDivisonError:
print("U can't divide by Zero!")
else:
print("Yeah")
如果try没问题,则执行else的代码
处理FileNotFoundError异常
好像也没什么好讲的,就说一个spilt()方法吧,让可以根据空格把字符串拆分并存储在一个列表之中,所以可以用来计算文本的单词量
失败时一声不吭
有时候并不希望有提示,可以使用pass
filename = 'x.txt'
def ss():
try:
with open(filename) as file_ob:
#...
except:
pass
else:
#...