python基础(四)
文件操作
1、接触文件操作
f1 = open("d:\\test.txt",mode='r',encoding='utf-8') content = f1.read() print(content) f1.close() ''' open 内置函数 mode 以什么方式打开 encoding 指定打开的编码 f1 文件句柄 f1.close() 关闭文件,释放内存 文件操作三部曲: 1.打开文件 2.操作文件句柄 3.关闭文件句柄
错误原因:
1.UnicodeDecodeError encoding编码的问题
2. OSError: [Errno 22] Invalid argument: 'd:\test.txt'
解决方式:1.单斜杠换成双斜杠
2.在文件路径前面加上r '''
2、文件的读取 r rb r+ r+b
# 文件的读取 # read 读取文件里面的所有内容 # f1 = open('read',mode='r',encoding='utf-8') # content = f1.read() # print(content) # f1.close() ''' 答案: 大发了大量疯狂开发的建设 范德萨快疯了达萨罗 fdsajlkfd 放大了防静电卡司法局 ''' # read(n) 读n个字符 # f1 = open('read',mode='r',encoding='utf-8') # content = f1.read(8) # print(content) # f1.close() ''' 答案: 大发了大量疯狂开 ''' # readline 每次读取一行 # f1 = open('read',mode='r',encoding='utf-8') # content = f1.readline() # content1 = f1.readline() # print(content) # print(content1) # f1.close() ''' 答案: 大发了大量疯狂开发的建设 范德萨快疯了达萨罗 ''' # readlines() # 把文件里面所有的行放到一个列表中 # f1 = open('read',mode='r',encoding='utf-8') # content = f1.readlines() # print(content) # f1.close() ''' 答案: ['大发了大量疯狂开发的建设\n', '范德萨快疯了达萨罗\n', 'fdsajlkfd\n', '放大了防静电卡司法局'] ''' # for循环 推荐使用这种,节省内存 f1 = open('read',mode='r',encoding='utf-8') for line in f1: print(line) f1.close()
''' 答案: 大发了大量疯狂开发的建设 范德萨快疯了达萨罗 fdsajlkfd 放大了防静电卡司法局 '''
# rb 用来读取非文本文件,不需要指定编码
f1 = open('taiger.jpg',mode='rb')
content = f1.read()
print(content)
f1.close()
# r+ 先读取后写入在最后
f1 = open('read',mode='r+',encoding='utf-8')
content = f1.read()
f1.write("这是新加的内容")
f1.close()
3、文件的写入 w wb w+ w+b
# w 文件不存在就创建文件,文件存在的话就清空文件内容,添加写入的内容
f1 = open('write',mode='w',encoding='utf-8') f1.write('这是新的一个文件') f1.close()答案:
f1 = open('write',mode= 'w',encoding='utf-8') f1.write('现在这个文件存在的情况下写入的....') f1.close()答案:
# wb 对非文本文件的写入
f1 = open('taiger.jpg',mode='rb') content = f1.read() f1.close() f2 = open('taiger1.jpg',mode='wb') f2.write(content) f2.close()执行上面代码前:
执行代码后:
4、文件的追加 a ab a+ a+b
# a 在文件的末尾追加写入的内容
f1 = open('additional','a',encoding='utf-8') f1.write('这是追加的内容') f1.close()执行之前:
执行之后:
5、tell
# tell告诉你文件有多少字节
f1 = open('read','r+',encoding='utf-8') content = f1.read() print(f1.tell()) # 129 f1.close()
6、seek
# seek是移动光标的位置
# a1.txt的内容如下
# 每天坚持一点,
# 每天努力一点
# 每天多思考一点
# 慢慢你会发现
# 你的进步越来越大。f1 = open('a1.txt',mode='a+',encoding='utf-8') f1.write('你的路也会越走越宽!!!') # 如果此时去读取的话,光标在文件的末尾,读取是没有内容的,此时就要用到seek,比如我在seek里面的参数为12的话,就的从第12个字节开始 # 此处要注意,是字节,比如:utf8编码中,一个中文是3个字节,所以要在3的倍数处进行seek f1.seek(12) content = f1.read() print(content) f1.close()答案:
一点,
每天努力一点
每天多思考一点
慢慢你会发现
你的进步越来越大。你的路也会越走越宽!!!
7、flush
# 强制刷新
------------ end ------------------------
对于一个有思想的人来说,没有地方是荒凉而遥远的