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: est.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()
'''
答案:
['大发了大量疯狂开发的建设
', '范德萨快疯了达萨罗
', 'fdsajlkfd
', '放大了防静电卡司法局']
'''

# 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()

image

3、文件的写入   w   wb   w+  w+b

# w   文件不存在就创建文件,文件存在的话就清空文件内容,添加写入的内容

f1 = open('write',mode='w',encoding='utf-8')
f1.write('这是新的一个文件')
f1.close()

答案:

image

f1 = open('write',mode= 'w',encoding='utf-8')
f1.write('现在这个文件存在的情况下写入的....')
f1.close()

答案:

image

# wb 对非文本文件的写入

f1 = open('taiger.jpg',mode='rb')
content = f1.read()
f1.close()

f2 = open('taiger1.jpg',mode='wb')
f2.write(content)
f2.close()

执行上面代码前:

image

执行代码后:

image

4、文件的追加   a  ab a+  a+b

# a 在文件的末尾追加写入的内容

f1 = open('additional','a',encoding='utf-8')
f1.write('这是追加的内容')
f1.close()

执行之前:

image

执行之后:

image

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 ------------------------

对于一个有思想的人来说,没有地方是荒凉而遥远的
原文地址:https://www.cnblogs.com/quanag/p/12644079.html