若依倾天下

导航

文件操作

文件操作

1.文件路径:有绝对路径和相对路径之分     

d:\py_file\你好.txt

2.编码方式:utf-8  gbk .....

3.操作方式:只读,只写,追加,读写,写读

    以什么编码方式存储的文件,就以什么编码方式打开

 

只读:

 

#绝对路径
f = open('d:\py_file\若依倾天下.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)
f.close()

  

#非文字类打开bytes格式,如图片
f = open('若依若倾',mode='rb')
content = f.read()
print(content,type(content))
f.close()

#返回:
#b'\xe8\x8b\xa5\xe4\xbe\x9d\xe8\x8b\xa5\xe5\x80\xbehello\r\n\xe4\xbd\xa0\xe4\xbb\xac\xe6\x98\xaf\xe6\x9c\x80\xe6\xa3\x92\xe7\x9a\x84'
#Process finished with exit code 0

  

#w 写
f = open('log',mode='w',encoding='utf-8')
f.write('空军和航母')
f.close()

#写成bytes类型
f = open('log',mode='wb')
f.write('老实交代烦死了两款手机发了'.encode('utf-8'))  #bytes进行转化成utf-8,转换成什么需要看工具默认的编码方式,不能随便乱写
f.close()

  

#追加  a,追加在最后一行最后
f = open('log',mode='a',encoding='utf-8')
f.write('若依倾天下')
f.close()

#追加 ab
f = open('log',mode='ab')
f.write('若依倾天下我'.encode('utf-8'))
f.close()

  

#读写
f = open('log',mode='r+',encoding='utf-8')
print(f.read())
f.write('若依倾天下')
#print(f.read())   #不会再重复读,只读一次
f.close()

#也可只读

f = open('log',mode='r+',encoding='utf-8')
print(f.read())
f.close()

#写读  从头新写入多少位就占用多少位,超过会覆盖原来的
f = open('log',mode='r+',encoding='utf-8')
f.write('aaa')
print(f.read())
f.close()


#r+b 读写
f = open('log',mode='r+b')
print(f.read())
f.write('nnnn'.encode('utf-8'))
f.close()

  

#w+  都是先清除再写
f = open('log',mode='w+',encoding='utf-8')
f.write('aaabbbccc')
f.seek(6)  #调光标,读的光标位置
print(f.read())
f.close()

  

#a+ 追加 只是增加了读的功能
f = open('log',mode='a+',encoding='utf-8')
f.write('若倾好的')
f.seek(0)   #只是读的光标
print(f.read())   #如果mode只是a 使用read会报错,a+ 则不会,可加光标进行读
f.close()

  

#功能详解

f = open('若依倾天下',mode='r+',encoding='utf-8')
#content = f.read(3)   #只打印前个字符
f.seek(3)       #seek按照字节定位光标位置,从第三个字节开始读取三个,一个英文字母一个字节,一个中文三个字节
#断点续传 判断光标位置
print(f.tell())     #告诉光标位置
content = f.read(3)
print(content)
f.close()

  

#tell运用

1 f = open('若依倾天下',mode='a+',encoding='utf-8')
2 f.write('若倾')
3 count = f.tell()
4 print(count)
5 f.seek(count - 3)
6 print(f.read())
7 f.close()
View Code

 

f = open('若依倾天下',mode='r+',encoding='utf-8')
line = f.readline()     #一行一行读
line = f.readlines()    #每一行当成列表中的一个元素,添加到列表
    返回 ['若倾倾若倾若倾若倾若倾若倾\n', 'lsjdsa\n', 'lsjfs\n', '零售价方式\n', '蓝色快捷方式\n']
f.truncate(4)  #括号为空清空所有,数字4代表保留前四个字节
line = f.read()  #打印所有
print(line)
for line in f:      #for循环打印文件,一行一行
    print(line)
f.close()

#自动关闭close
with open('若依倾天下',mode='r+',encoding='utf-8') as obj:
    print(obj.read())

#同时打开多个
with open('若依倾天下',mode='r+',encoding='utf-8') as f1,\
        open('若依若倾',mode='r+',encoding='utf-8') as f2:
    print(f1.read())
    print(f2.read())

 

 

username = input("请输入你要注册的用户名")
pwd = input("请输入你要注册的密码")
with open('list_of_info',mode='w',encoding='utf-8') as f:
    f.write('{}\n{}'.format(username,pwd))
print("恭喜你注册成功")

lis = []
i = 0
while i < 3:
    i += 1
    uname = input("请输入你注册的姓名:")
    upwd = input("请输入你注册的密码:")
    with open('list_of_info',mode='r+',encoding='utf-8') as f1:
        for line in f1:
            lis.append(line)
    if uname == lis[0].strip() and upwd == lis[1].strip():
        print("登陆成功")
        break
    else:
        print("账号密码错误,请重新登陆")

 

#修改文件方式

 1 #修改文件
 2 #理论上不能修改
 3 with open('若依若倾','r',encoding='utf-8') as f1,open('若依若倾.bak','w',encoding='utf-8') as f2:
 4     for line in f1:
 5         if 'hello' in line:
 6             line = line.replace('hello','iloveyou')
 7         print(line)
 8         f2.write(line)
 9 
10 #删除文件,重命名文件
11 import os
12 os.remove('若依若倾')
13 os.rename('若依若倾.bak','若依若倾')
View Code

 

posted on 2019-06-29 12:29  若依倾天下  阅读(156)  评论(0编辑  收藏  举报