open()返回一个文件对象,open(filename,mode)
f = open('workfile','w')
第一个参数是包含文件名的字符串,第二个参数可以是包含一些字符的字符串
'r':仅读取文件, 'w':仅写入文件,'a'打开文件以进行添加的模式
'r+'打开文件进行读取和写入,模式参数是可选的。'r'如果省略,将被假定。
'b'附加模式的文件将以二进制模式打开。此模式应用于所有不包含文本的文件。
如果不使用with关键字,则应调用发f.close(),关闭文件并立即释放文件使用的所有系统资源。
如何读取纯文本的文件:
def main():
f = open(' 文件名', 'r')
print(f.read())
f.close()
if __name__ == '__main__':
main()
open函数指定的文件不存在或者无法打开,会引起异常状况,导致程序崩溃,我们可以用python的异常机制对可能在运行时发生状况的代码进行适当的处理:
def main():
f = None
try:
f =open('C:\dafef\Desktop2916734751.txt', 'r')
print(f.read())
except FileNotFoundError:
print('无法打开指定的文件')
except LookupError:
print('指定了未知的编码')
except UnicodeDecodeError:
print('读取文件时解码错误')
finally:
if f:
f.close()
if __name__ == '__main__':
main()
用with处理,在处理文件时,最好使用关键字,即使在某个时候引发了异常,文件在其套件完成后也会正确关闭,使用with语句,相对于try-finally块短得多。
def main():
try:
with open('C:\dafef\Desktop2916734751.txt', 'r') as f:
print(f.read())
except FileNotFoundError:
print('无法打开指定的文件')
except LookupError:
print('指定了未知的编码')
except UnicodeDecodeError:
print('读取文件时解码错误')
if __name__ == '__main__':
main()
在try代码块的后面跟上一个或多个except来捕获可能出现的异常情况。
除了read方法读取以外还可以用for-in循环逐行读取和readlines将文件按行读取到一个列表容器中:
import time
def main():
with open(' ','r')as f:
print(f.read())
#for in 逐行读取
with open('','r') as f:
for line in f:
print(line, end='')
time.sleep(0.5)
print()
#读取文件按行读取到列表中
with open('','r') as f:
lines = f.readlines()
print(lines)
if __name__ == '__main__':
main()
写文件时将文件模式设置为'w'
如何将1-100间的素数写入两个文件中:
from math import sqrt
def is_prime(n):
assert n > 0
for factor in range(2,int(sqrt(n))+1):
if n % factor == 0:
return False
return True if n != 1 else False
def main():
filenames = ('z.txt', 'b.txt')
fs_list = []
try:
for filename in filenames:
fs_list.append(open(filename, 'w' ))
for number in range(1, 100):
if is_prime(number):
if number < 50:
fs_list[0].write(str(number) + '\n')
elif number < 100:
fs_list[1].write(str(number) + '\n')
except IOError as ex:
print(ex)
print('写文件时发生错误')
finally:
for fs in fs_list:
fs.close()
print('操作完成')
if __name__ == '__main__':
main
读写json文件
读取文件:
import json
test = {'苹果': 12, '香蕉':13, '橙子': 14}
print(test)
print(type(test))
json_str = json.dumps(test)
print(json_str)
print(type(json_str))
使用Python中的json模块将字典或列表以JSON格式保存到文件中:
import json
def main():
mydict = {
'name': '怼怼',
'age': '19',
'like': 'apple'
}
try:
with open('data.json','w') as fs:
json.dump(mydict, fs)
except IOError as e:
print(e)
print('保存数据完成')
if __name__ == '__main__':
main
json模块主要有四个比较重要的函数,分别是:
dump- 将Python对象按照JSON格式序列化到文件中,
dumps - 将Python对象处理成JSON格式的字符串,
load - 将文件中的JSON数据反序列化成对象,
loads - 将字符串的内容反序列化成Python对象。