运维开发网

python day 8

运维开发网 https://www.qedev.com 2020-04-23 17:40 出处:网络 作者:运维开发网整理
1、文件操作 文件:模特主妇护士老师.txt 打开txt,如果自己写一个软件打开需要:

1、文件操作

文件:模特主妇护士老师.txt

打开txt,如果自己写一个软件打开需要:

(1)文件路径:d:\模特主妇护士老师.txt

(2)文件的编码方式:utf—8  gbk  ..... ......

(3) 操作方式:只读、只写、追加、读写、写读    ... ...

(4)以什么编码方式储存的文件,就以什么编码打开进行操作。

只读:r   rb

需要注意encoding表示编码集. 根据文件的实际保存编码进行获取数据, 对于我们而言. 更

多的是utf-8.

rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.

rb  的作用: 在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要用到rb.

因为这种数据是没办法直接显示出来的. 在后面我们文件上传下载的时候还会用到. 

我们看的直播. 实际上都是这种数据.

只写:w wb

wb模式下. 可以不指定打开文件的编码. 但是在写文件的时候必须将字符串转化成utf-8的bytes数据

追加 :a  ab

在追加模式下. 我们写入的内容会追加在文件的结尾.

读写 :r+  rb(bytes类型)

 追加读:r+

# 文件操作 只读
# 绝对路径 从磁盘根目录开始一直到文件名
‘‘‘f = open(‘d:\流沙河.txt‘,mode=‘r‘,encoding=‘utf-8‘)  #文件对象
content = f.read() # 通过对象.进行操作 (读取)
print(content)
f.close() # 不要忘了关掉文件‘‘‘

# 相对路径:同一个文件夹下的文件. 相对于当前这个程序所在的文件夹而言. 如果在同
‘‘‘# 一个文件夹中. 则相对路径就是这个文件名. 如果在上一层文件夹. 则要../
# 推荐大家使用相对路径. 因为在我们把程序拷贝给别人使用的时候. 直接把项目拷贝走
# 就能运行. 但是如果用绝对路径. 那还需要拷贝外部的文件.
f = open(‘流沙河‘,mode=‘r‘,encoding=‘utf-8‘)
content = f.read()
print(content,type(content)) # utf-8打开的文件为什么是unicode的str形式
f.close()
‘‘‘
# bytes
‘‘‘f = open(‘流沙河‘,mode=‘rb‘,)
content = f.read()
print(content)
f.close()‘‘‘

# 文件操作 只写
# 对于w:没有此文件就创建文件
‘‘‘f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘)
f.write(‘哪吒闹海‘)
f.close()‘‘‘

# 对于w:有此文件的把原来的内容删掉显示新写的内容
‘‘‘f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘)
f.write(‘东海龙王三太子‘)
f.close()‘‘‘
 # bytse
‘‘‘f = open(‘log‘,mode=‘wb‘)
f.write(‘东海龙王三太子‘.encode(‘utf-8‘))
f.close()
‘‘‘

# 追加 光标
‘‘‘f = open(‘log‘,mode=‘a‘,encoding=‘utf-8‘)
f.write(‘、三头六臂灵珠子‘)
f.close()‘‘‘
# bytse
‘‘‘f = open(‘log‘,mode=‘ab‘)
f.write(‘、三头六臂灵珠子‘.encode(‘utf-8‘))
f.close()‘‘‘

# 读写 r+
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
print(f.read())
f.write(‘、暝灵石猴孙悟空‘)
f.close()‘‘‘
# 写读  写是第一步,所以会在最前边 会占前边的位置
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
f.write(‘平天大圣牛魔王、‘)
print(f.read())
f.close()‘‘‘
# rb
‘‘‘f = open(‘log‘,mode=‘r+b‘)
print(f.read())
f.write(‘暝灵石猴孙悟空‘.encode(utf-8))
f.close()‘‘‘

# 写读 先将所有的内容清空. 然后写入.
# 最后读取. 但是读取的内容是空的, 不常用
‘‘‘f = open(‘log‘,mode=‘w+‘,encoding=‘utf-8‘)
f.write(‘ 铁扇公主 ‘)
f.seek(0) # 调光标
print(f.read())
f.close()‘‘‘

# 追加读 a+
‘‘‘f = open(‘log‘,mode=‘a+‘,encoding=‘utf-8‘)
f.write(‘ 玉面狐狸 ‘)
f.seek(0)
print(f.read())
f.close()‘‘‘

# 功能详解
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
#seek按照字节定光标 utf-8一个字符3个字节 只能用3的倍数
f.seek(3)
# content = f.read(2) 读出来都是字符,你能看到的最小单位
print(f.tell())  # 确定光标的位置
content = f.read()
print(content)
f.close()‘‘‘

# 调节光标的位置
‘‘‘f = open(‘log‘,mode=‘a+‘,encoding=‘utf-8‘)
f.write(‘齐天大圣‘)
count = f.tell()
f.seek(count-6)
print(f.read())
f.close()‘‘‘

# readable是否可读
‘‘‘f = open(‘log‘,mode=‘a+‘,encoding=‘utf-8‘)
print(f.readable())  # 返回True 或者 Fals
f.close()‘‘‘

# f.readline() 一行一行的读
# f.readlines() 每一行当成列表中的一个元素,添加到list中
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
line1 = f.readline()
line2 = f.readlines()
print(line1)
print(line2)
f.close()‘‘‘

# f.truncate()  对原文件截取
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
f.truncate(1)
f.close()‘‘‘

# 循环打印
‘‘‘f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
for line in f:
    print(line)
f.close()‘‘‘

 # 打开文件 自动关闭不需要f.close()
‘‘‘with open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘) as obj:
    # obj 是命名文件的变量,可随意
    print(obj.read())
# 打开多个文件
with open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘) as f,        open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘) as f1:
    print(f.read())‘‘‘

# 注册加登陆三次机会
username = input(‘请输入你要注册的用户名:‘)
password = input(‘请输入你要注册的密码:‘)
with open(‘list_info‘,mode=‘w‘,encoding=‘utf-8‘)as f :
    f.write(‘{}\n{}‘.format(username,password))
print(‘恭喜你注册成功‘)
lis = []
i = 0
while i < 3:
    uname = input(‘请输入你的用户名:‘)
    pword = input(‘请输入你的密码:‘)
    with open(‘list_info‘,mode=‘r+‘,encoding=‘utf-8‘)as f1 :
        for line in f1:
            lis.append(line)
    if uname == lis[0].strip() and pword == lis[1].strip():
        print(‘登陆成功‘)
        break
    else:print(‘账号密码错误‘)
    i += 1
0

精彩评论

暂无评论...
验证码 换一张
取 消