【4858.com】python全栈开辟,第二章之用户登入作业

By admin in 4858.com on 2019年5月17日
#coding = utf-8
import datetime
today=datetime.date.today()                 #读取当前日期
password = {}                               #创建字典
passwd = open('user_file.txt','r')          #以只读的模式打开,确保文件存在,否则报错
for f in passwd.readlines():                #读取文件的全部内容
    u = f.split('\n')[0]                    #以回车为分割取出用户名
    p = f.split('\n')[0]                    #以回车为分割取出密码
    m = p.split('\n')[0]                    #以回车为分割符,取出密码的完整内容
    password[p] = m
#print (password)
passwd.close()

lock = {}
user = {}
lock_info = open('lock_file.txt','r')        #以只读的模式打开
user_info = open('user_file.txt','r')        #以只读的模式打开
for i in lock_info.readlines():
    k1 = i.split('\n')[0]
    lock[k1]=k1
for u in user_info.readlines():
    n=u.split('\n')[0]
    user[n]=n
#print (lock)
#print (user)
count = 0
lock_info.close()
user_info.close()
username = input("请输入您的用户名:")
if username in lock.keys():
    print ("该用户已被锁定,无法正常登录!")
elif username in user.keys():
    pwd = input("请输入您的密码:")
    if pwd == password[username]:
        welcome="""
       -----------Welcome info----------

       登录成功!
       欢迎您:%s,今天是:%s.

       ---------------End--------------
       """%(username,today)
        print(welcome)
    else:
        while count < 2:
            pwd = input("密码错误,请重新输入:")
            if pwd == password[username]:
                welcome="""
              -----------Welcome info----------

              登录成功!
              欢迎您:%s,今天是:%s.

              ---------------End--------------
              """%(username,today)
                print(welcome)
                break
            count+=1
        else:
            lock_user = open("lock_file.txt",'a')  #将被锁定的用户名追加写入lock_file.txt文件中
            lock_user.write(username+'\n')
            lock_user.close()
            print ("您的密码输入错误超过三次,用户被锁定!")
else:
    print("无效的用户名,系统退出!")
    exit()        

Python3之文件读写操作的实例批注,

文件操作的手续:

开拓文件 -> 操作文件 -> 关闭文件

纪事:最终要关闭文件(不然大概会有不测的结果)

开发文件

文件句柄 = open(‘文件路线’, ‘方式’)

内定文件编码

文本句柄= open(‘文件路线’,’方式’,encoding=’utf-八’)

为了幸免遗忘关闭文件,能够应用上下文管理器来张开文件

with open(‘文件路径’,’格局’) as 文件句柄:

开辟文件的情势有:

r,只读格局(默许)。
w,只写格局。【不可读;不设有则创设;存在则删除内容;】
a,追加情势。【可读; 不存在则开创;存在则只扩大内容;】
r+,可读写文件。【可读;可写;可增添】
w+,写读
“U”表示在读取时,能够将 \r \n \r\n自动调换来 \n (与 r 或 r+
格局同使用)

rU

r+U

“b”表示管理2进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows管理二进制文件时需标注)

rb

wb
ab

关门文件

文件句柄.close()

操作文件:

detach

占位

fileno(重返文件描述符,用于底层操作系统的 I/O 操作)

fid = 文件句柄.fileno()

print(fid)

flush(刷新缓冲区,将缓冲区中的数据立马写入文件)

文本句柄.flush()

isatty(判定文件是否连接到一个巅峰设备,再次来到布尔值)

文件句柄.isatty()

read(从文件中读取钦定的字符数,暗许读取全体)

str = 文件句柄.read() #读取整个文件
str一 = 文件句柄.read(拾) #读取文件前13个字符
readable(剖断文件是还是不是可读,再次来到布尔值)

文本句柄.readable()

readline(每便最多读取一行数据,每行的终极包罗换行符’\n’)

print(文件句柄.readline()) #读取第三行数据
print(文件句柄.readline(叁)) #读取第二行前三个字符
print(文件句柄.readline()) #读取第1行剩余字符
print(文件句柄.readline()) #读取第一行

seek(移动文件读取的指针,假诺文件中带有普通话,移动指针必须是叁的倍数,不然会报错,因为3当中文字符等于二个字节)

文本句柄.seek(陆)

seekable(判别文件指针是或不是可用,重临布尔值)

文件句柄.seekable()

tell(获取指针地点)

文件句柄.tell()

truncate(截断,把指针前边的内容剔除,并写入文件,要在可写形式下操作)

f = open(‘text.txt’,’r+’,encoding=’utf-8′)
f.seek(9) #把指针移动到第十二个字节后边(即第3个中文前边)
f.truncate() #把第四个汉语后边的字符删除,并写入文件
【4858.com】python全栈开辟,第二章之用户登入作业。f.close()

writable(剖断文件是或不是可写,再次回到布尔值)

文件句柄.writable()

write(把字符串写入文件,并回到字符数)

文本句柄.write(‘字符串’)

文件操作的步骤: 张开文件 – 操作文件 – 关闭文件
切记:最终要关张文件(不然恐怕会有意外的结…

文件操作的步调:

python_day8

壹.前几日第二内容
文件操作:

  1. r
  2. w
  3. a
  4. r+读写方式.须求活动光标进行反复读写

  5. w+

  6. a+
  7. b bytes 读写操作的是字节.
    用在非文本上
  8. seek() 移动光标到xx地点,开始:
    seek(0), 末尾: seek(0,二)
  9. 文件修改

    创制新文件. 把修改后的剧情写入新文件.
    删除老文件. 重命名新文件
    import os
    os.remove(“”)删除文件
    os.rename(“源文件”, “新文件名”)
    重命名文件

    for line in f:
    line 一行数据

    with open(“文件名”) as f:
    不必要关闭文件句柄

08.
万恶之源-⽂件操作
本节重点内容:

  1. 初识⽂件操作
  2. 只读(r, rb)
  3. 只写(w, wb)
  4. 追加(a, ab)
  5. r+读写
  6. w+写读
  7. a+写读(追加写读)
  8. 其余操作⽅法
  9. ⽂件的修改以及另⼀种张开⽂件句柄的⽅式

关键内容:
⼀. 初识⽂件操作
使⽤python来读写⽂件是非常轻巧的操作.
大家使⽤open()函数来开荒⼀个⽂件, 获取到⽂
件句柄.
然后经过⽂件句柄就足以进⾏多姿多彩的操作了.
依据展开⽅式的不等亦可执⾏的操
作也许有相应的差距.
打开⽂件的⽅式: r,
w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b
默认使⽤的是r(只读)模式
⼆. 只读操作(r, rb)

f = open("护⼠少妇嫩模.txt",mode="r", encoding="utf-8")
content = f.read()
print(content)
f.close()

须要留意encoding表⽰编码集.
依照⽂件的实际保存编码进⾏获取数据, 对于大家⽽⾔. 更 多的是utf-8.

rb. 读收取来的数量是bytes类型,
在rb形式下. 不能够选拔encoding字符集.

f = open("护⼠少妇嫩模.txt",mode="rb" )
content = f.read()
print(content)
f.close()
#结果:
b'\xe6\xaf\x85\xe5\x93\xa5, \xe5\xa4\xaa\xe7\x99\xbd,
wuse\n\xe5\x91\xb5\xe5\x91\xb5\n\xe6\x97\xa5\xe5\xa4\xa9'

rb的作⽤:

在读取非⽂本⽂件的时候. 例如读取MP五. 图像. 录制等音信的时候就供给⽤到
rb. 因为这种数据是没

主意直接显⽰出来的. 在后⾯我们⽂件上传下载的时候还会⽤到. 还有.
咱们看的直播. 实际上都以那

种数据. 相对路径和相对路线: 一. 相对路线:从磁盘根⽬录初步⼀直到⽂件名. 二.
相对路线:同⼀个⽂件

夹下的⽂件. 相对于当下以此顺序所在的⽂件夹⽽⾔. 假诺在同 ⼀个⽂件夹中.
则相对路线正是那一个⽂

件名. 假若在上⼀层⽂件夹. 则要../

4858.com 1

更推荐⼤家使⽤相对路径.
因为在我们把程序拷⻉给别⼈使⽤的时候. 直接把项⽬拷⻉走 就能够运⾏.
可是如若⽤绝对路线. 那还须求拷⻉外部的⽂件.

先生声明:

开辟文件 -> 操作文件 -> 关闭文件

读取⽂件的⽅法: 1. read() 将⽂件中的内容全方位读抽出来. 弊端: 占内部存款和储蓄器. 假如⽂件过⼤.轻易导致内部存款和储蓄器崩溃

f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
content = f.read()
print(content)
#结果:
友谊地久天⻓,
爱⼀点,
可惜我是⽔瓶座
⼀⽣中最爱

一、写代码一定要多小心代码的书写标准,多参谋pep八规范文档;

切记:最终要关门文件(否则可能会有意料之外的结果)

二. read(n) 读取n个字符. 供给小心的是. 借使重新读取. 那么会在当下岗位一而再去读⽽不 是发端读, 假诺使⽤的是rb情势. 则读抽出来的是n个字节

f = open("../def/哇擦.txt", mode="r" encoding="utf-8")
content = f.read(3)
print(content)
#结果:
友谊地
f = open("../def/哇擦.txt", mode="rb")
content = f.read(3)
print(content)
#结果:
b'\xe5\x8f\x8b'
f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
content = f.read(3)
content2 = f.read(3)
print(content)
print(content2)
#结果:
友谊地
久天⻓

二、对用户输入的多寡,应对首尾空格实行处理;

展开文件

3. readline() ⼀次读取⼀⾏数据, 注意: readline()结尾, 注意每一次读收取来的多寡都会有⼀ 个\n 所以呢. 要求大家使⽤strip()⽅法来去掉\n或然空格

f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
content = f.readline()
content2 = f.readline()
content3 = f.readline()
content4 = f.readline()
content5 = f.readline()
content6 = f.readline()
print(content)
print(content2)
print(content3)
print(content4)
print(content5)
print(content6)
#结果:
友谊地久天⻓,
爱⼀点,
可惜我是⽔瓶座
⼀⽣中最爱

三、文件操作时,应钦定字符编码格式(不相同的操作系统,相会世字符编码错误);

文本句柄 = open(‘文件路线’, ‘情势’)

四. readlines()将每⼀⾏产生⼀个因素, 放到⼀个列表中. 将装有的情节都读抽出来. 所以 也是. 轻便并发内部存储器崩溃的难点.不引入使⽤

f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
lst = f.readlines()
print(lst)
for line in lst:
 print(line.strip())

  在做那份作业时,也是刚学的python编制程序,看师资提供的录制教程,python编制程序从入门到试行那本书,在碰到老师所讲的或许自个儿在书上看到的不太通晓的知识点时,就自个儿到互连网诸如搜狐之类的去追寻扶助,看看别人对于叁个方法是怎么去行使,也许为了兑现多个职能是用哪个方法比较好,诸如该怎么去落实公文的读写操作,那是在录像教程里还没讲到的内容,但作业里需求动用,那那将须求笔者无法不超前去读书文件的读写操作是怎么着兑现的。

点名文件编码

5. 循环读取. 这种⽅式是组好的. 每一回读取⼀⾏内容.不会产⽣内部存款和储蓄器溢出的难题.

f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
for line in f:
 print(line.strip())

瞩目:
读取完的⽂件句柄⼀定要关张 f.close() 叁. 写情势(w, wb) 写的时候注意.
假如未有⽂件. 则会创制⽂件,

假诺⽂件存在. 则将原件中原来的剧情剔除,
再 写入新内容.

f = open("⼩娃娃", mode="w", encoding="utf-8")
f.write("⾦⽑狮王")
f.flush() # 刷新. 养成好习惯
f.close()

尝试读⼀读

f = open("⼩娃娃", mode="w", encoding="utf-8")
f.write("⾦⽑狮王")
f.read() # not readable 模式是w. 不可以执⾏读操作
f.flush()
f.close()

wb格局下. 能够不点名张开⽂件的编码.
但是在写⽂件的时候必须将字符串转化成utf-8的 bytes数据

f = open("⼩娃娃", mode="wb")
f.write("⾦⽑狮王".encode("utf-8"))
f.flush()
f.close()

  在做那份作业时自己的第一也统统是位于了该怎么着去做出作业所要求完毕的服从,对于其它如大校所波及的pep捌编码标准则是未曾传说也从未见到过,在观望教师注脚后去认真的把那一个pep8编码规范看了一遍,原来并不是说大家写完代码后不报错、能健康运作、能够兑现所急需的意义就OK了,原来代码编写的暗中还有那样个正式去须要大家,诸如:

文本句柄= open(‘文件路线’,’形式’,encoding=’utf-八’)

四. 追加(a, ab)

在加多方式下.
我们写入的内容会大增在⽂件的结尾.

f = open("⼩娃娃", mode="a", encoding="utf-8")
f.write("麻花藤的最爱")
f.flush()
f.close()

ab格局⾃⼰试⼀试就好了

  空格的采取
    总体规格,制止不要求的空格。
    壹各类右括号前毫不加空格。
    2逗号、冒号、分号前不要加空格。
    三函数的左括号前无须加空格。如Func(一)。
    4连串的左括号前毫无加空格。如list[2]。
    伍操作符左右各加3个空格,不要为了对齐扩充空格。
    6函数暗中认可参数使用的赋值符左右省略空格。
    7不要将多句语句写在一样行,固然接纳‘;’允许。
    8if/for/while语句中,即便进行语句唯有一句,也不能够不另起1行。

为了防备遗忘关闭文件,能够利用上下文管理器来展开文件

伍. 读写格局(r+, r+b)

对此读写格局. 必须是先读.
因为默许光标是在早先的. 计划读取的.

当读完了后来再进⾏ 写入.
大家今后使⽤频率最⾼的形式正是r+ 精确操作是:

f = open("⼩娃娃", mode="r+", encoding="utf-8")
content = f.read()
f.write("麻花藤的最爱")
print(content)
f.flush()
f.close()
#结果:
#正常的读取之后, 写在结尾

错误操作:

f = open("⼩娃娃", mode="r+", encoding="utf-8")
f.write("哈哈")
content = f.read()
print(content)
f.flush()
f.close()

结果:
将起头的源委改写成了”哈哈”, 然后读取的内容是后⾯的内容.

之所以记住: r+形式下. 必须是先读取.
然后再写入 陆. 写读(w+, w+b) 先将兼具的内容清空. 然后写入. 最后读取.
可是读取的剧情是空的, 有的时候⽤

f = open("⼩娃娃", mode="w+", encoding="utf-8")
f.write("哈哈")
content = f.read()
print(content)
f.flush()
f.close()

有⼈会说. 先读不就好了么? 错. w+ 格局下,
⼀初始读取不到数据. 然后写的时候再将原本 的内容清空. 所以, 很少⽤.

  注释
    总体原则,错误的评释不比未有注释。所以当一段代码爆发变化时,第3件事就是要修改注释!
    注释必须选取英文,最佳是欧洲经济共同体的语句,首字母大写,句后要有甘休符,截止符后跟四个空格,早先下一句。即使是短语,能够回顾截至符。
    一块注释,在一段代码前扩张的笺注。在‘#’后加1空格。

with open(‘文件路线’,’格局’) as 文件句柄:

七. 追加读

(a+) a+情势下, 不论先读依旧后读.
都是读取不到多少的.

f = open("⼩娃娃", mode="a+", encoding="utf-8")
f.write("⻢化腾")
content = f.read()
print(content)
f.flush()
f.close()

还有⼀些其余的带b的操作. 就不多废话了.
正是把字符换来字节. 仅此⽽已

有关文件的读写操作:

开拓文件的情势有:

⑧. 别的连锁操作

  1. seek(n) 光标移动到n地点, 注意,
    移动的单位是byte. 所以若是是UTF-八的中⽂部分要 是三的倍数.

平凡我们使⽤seek都以活动到初始恐怕结尾.
移动到起先: seek(0) 移动到终极: seek(0,二)
seek的第⼆个参数表⽰的是

从哪个岗位进⾏偏移, 暗许是0, 表 ⽰开首,
一表⽰当前职分, 2表⽰结尾

f = open("⼩娃娃", mode="r+", encoding="utf-8")
f.seek(0) # 光标移动到开头
content = f.read() # 读取内容, 此时光标移动到结尾
print(content)
f.seek(0) # 再次将光标移动到开头
f.seek(0, 2) # 将光标移动到结尾
content2 = f.read() # 读取内容. 什么都没有
print(content2)
f.seek(0) # 移动到开头
f.write("张国荣") # 写⼊信息. 此时光标在9 中⽂3 * 3个 = 9
f.flush()
f.close()

  使用python来读写文件是特别简单的操作,我们应用open()函数来开垦3个文本,获取到文件句柄,然后通过文件句柄就足以对文本实行二种多种的操作了,依据展开药格局的不如,能够实行的操作也是有对应的歧异。

r,只读形式(私下认可)。
w,只写格局。【不可读;不设有则创制;存在则删除内容;】
a,追加格局。【可读; 不设有则创立;存在则只扩展内容;】
r+,可读写文件。【可读;可写;可扩大】
w+,写读
“U”表示在读取时,能够将 \r \4858.com ,n \r\n自动转变到 \n (与 r 或 r+
形式同使用)

二. tell() 使⽤tell()能够帮大家获取到最近光标在什么样地点

f = open("⼩娃娃", mode="r+", encoding="utf-8")
f.seek(0) # 光标移动到开头
content = f.read() # 读取内容, 此时光标移动到结尾
print(content)
f.seek(0) # 再次将光标移动到开头
f.seek(0, 2) # 将光标移动到结尾
content2 = f.read() # 读取内容. 什么都没有
print(content2)
f.seek(0) # 移动到开头
f.write("张国荣") # 写⼊信息. 此时光标在9 中⽂3 * 3个 = 9
print(f.tell()) # 光标位置9
f.flush()
f.close()

  张开文件的点子有:r , w , a , r+ ,
w+ , a+ , rb , wb , ab , r+b , w+b ,
a+b等,暗许使用的是r(只读)情势。

rU

3. truncate() 截断⽂件

f = open("⼩娃娃", mode="w", encoding="utf-8")
f.write("哈哈") # 写⼊两个字符
f.seek(3) # 光标移动到3, 也就是两个字中间
f.truncate() # 删掉光标后⾯的所有内容
f.close()
f = open("⼩娃娃", mode="r+", encoding="utf-8")
content = f.read(3) # 读取12个字符
f.seek(4)
print(f.tell())
f.truncate() # 后⾯的所有内容全部都删掉
# print(content)
f.flush()
f.close()

深坑请小心:
在r+格局下. 倘若读取了内容. 不论读取内容有一点. 光标显⽰的是有个别. 再写入
或然操作⽂件的时候都是

在最后进⾏的操作.

故而假诺想做截断操作. 记住了.
要先挪动光标. 挪动到你想要截断的地点. 然后再进⾏截断 关于truncate(n),
假设给

出了n. 则从上马起首进⾏截断, 若是不给n,
则从当下地点截断. 后⾯ 的内容将会被删除

 

一、只读操作(r、rb)

r+U

九. 修改⽂件以及另⼀种展开⽂件的⽅式

⽂件修改: 只好将⽂件中的内容读取到内部存款和储蓄器中,
将音讯修改实现, 然后将源⽂件删除, 将新
⽂件的名字改成老⽂件的名字.

# ⽂件修改
import os
with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
 open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
 content = f1.read()
 new_content = content.replace("冰糖葫芦", "⼤⽩梨")
 f2.write(new_content)
os.remove("⼩娃娃") # 删除源⽂件
os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂件

弊病: ⼀次将享有剧情进⾏读取. 内部存款和储蓄器溢出.
化解⽅案: ⼀⾏⼀⾏的读取和操作

import os
with open("⼩娃娃", mode="r", encoding="utf-8") as f1,\
 open("⼩娃娃_new", mode="w", encoding="UTF-8") as f2:
 for line in f1:
 new_line = line.replace("⼤⽩梨", "冰糖葫芦")
 f2.write(new_line)
os.remove("⼩娃娃") # 删除源⽂件
os.rename("⼩娃娃_new", "⼩娃娃") # 重命名新⽂件

2018-07-11  15:37:55

 作业:

一,有如下文件,a1.txt,里面的内容为:
老男孩是最好的培训机构,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈
分别完成以下的功能:
a,将原文件全部读出来并打印。

f = open("a1.txt",mode="r",encoding="utf-8")
s = f.read()
print(s)
f.flush()
f.close()

b,在原文件后面追加一行内容:信不信由你,反正我信了。

 = open('a1.txt',mode="a",encoding="utf-8")
f.write("\n信不信由你,反正我信了")
f.flush()
f.close()

c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。

= open("a1.txt",mode="r+",encoding="utf-8")
s = f.read()
print(s)
f.write("\n信不信由你,反正我信了")
f.flush()
f.close

d,将原文件全部清空,换成下面的内容:

每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大。

f =  open("a1.txt",mode="w",encoding="utf-8")
f.write("每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大")
f.flush()
f.close()

e,将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,
‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。

import os
with open("a1.txt",mode="r+",encoding="utf-8")as f,\
    open("a1_1.txt",mode="w",encoding="utf-8")as f1:
    for line in f:
        f1.write(line.replace("我说的都是真的。哈哈","你们就信吧~\n我说的都是真的。哈哈"))
os.remove("a1.txt")
os.rename("a1_1.txt","a1.txt")

二,有如下文件,t1.txt,里面的内容为:
葫芦娃,葫芦娃,
一根藤上七个瓜
风吹雨打,都不怕,
啦啦啦啦。
我可以算命,而且算的特别准:
上面的内容你肯定是心里默唱出来的,对不对?哈哈
分别完成下面的功能:
a,以r+的模式打开原文件,判断原文件是否可读,是否可写。

f = open("t1.txt",mode="r+",encoding="utf-8")
print(f.readable())
print(f.writable())
f.close()

b,以r的模式打开原文件,利用for循环遍历文件句柄。

f = open("t1.txt",mode='r',encoding='utf-8')
for line in f:
    print(line,end="")

c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历
readlines(),并分析b,与c 有什么区别?深入理解文件句柄与
readlines()结果的区别。

f = open("t1.txt",mode='r',encoding="utf-8")
lst = f.readlines()
for i in lst:
    print(i,end="")

d,以r模式读取‘葫芦娃,’前四个字符。

f = open("t1.txt",mode="r",encoding='utf-8')
s = f.read(4)
print(s)
f.flush()
f.close()

e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。

f = open("t1.txt",mode='r',encoding="utf-8")
s = f.readline()
print(s.strip())

f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。

f = open("t1.txt",mode="r",encoding='utf-8')
for i in f:
    if i.startswith("风吹雨打"):
        print(i,end='')
        print(f.read())
f.flush()
f.close()

g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将原内容全部读取出来。

f = open("t1.txt",mode="a+",encoding="utf-8")
f.write("\n老男孩教育")
f.seek(0)
s = f.read()
print(s)
f.flush()
f.close()

h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’

f = open("t1.txt",mode="r+",encoding='utf-8')
f.seek(24)
f.truncate()
f.seek(0)
s = f.read()
print(s)
f.close()

三,文件a.txt内容:每一行内容分别为商品名字,价钱,个数。

apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
通过代码,将其构建成这种数据类型:
[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......]
并计算出总价钱。

li = []
sum = 0
f = open("a.txt",mode="r",encoding="utf-8")
lst = f.readlines()
for i in lst:
    dic = {}
    s = i.strip().split(" ")
    dic['name'] = s[0]
    dic['price'] = s[1]
    dic['amount'] = s[2]
    sum = sum + int(dic["price"])
    li.append(dic)
print(li)
print(sum)

四,有如下文件:

alex是老男孩python发起人,创建人。
alex其实是人妖。
谁说alex是sb?
你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

将文件中所有的alex都替换成大写的SB(文件的改的操作)。

import os
with open("alex.txt",mode="r",encoding="utf-8")as f,\
    open("alex_1.txt",mode="w",encoding="utf-8")as f1:
    for line in f:
        s = line.replace("alex","SB")
        f1.write(s)
os.remove("alex.txt")
os.rename("alex_1.txt","alex.txt")

五.文件a1.txt内容(升级题)
name:apple price:10 amount:3 year:2012
name:tesla price:100000 amount:1 year:2013
.......
通过代码,将其构建成这种数据类型:
[{'name':'apple','price':10,'amount':3},
{'name':'tesla','price':1000000,'amount':1}......]
并计算出总价钱。

lis = []
dic = {}
sum = 0
with open('a2.txt',mode="r",encoding='utf-8') as f:
    for i in f.readlines():
        c = i.split('\n')[0].split()
        for j in c:
            dic[j.split(':')[0]] = j.split(':')[1]
        sum += int(dic['price']) * int(dic['amount'])
        lis.append(dic)
print(lis)
print(sum)

六.文件a1.txt内容(升级题)
序号     部门      人数      平均年龄      备注
1       python    30         26         单身狗
2       Linux     26         30         没对象
3       运营部     20         24         女生多
.......
通过代码,将其构建成这种数据类型:
[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
......]

lis = []
with open('a3.txt',mode="r",encoding='utf-8') as f:
    s = f.readline().split()
    for i in f.readlines():
        dic = {}
        c = i.split()
        for j in range(len(c)):
            dic[s[j]] = c[j]
        lis.append(dic)
print(lis)

 

  pd = open(‘user_file.txt’,
mode=’r’, encoding=’utf-8′)     #
 以只读的格局展开,确定保证文件存在,不然报错

“b”表示管理2进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows管理贰进制文件时需标注)

  for f in pd.readlines():  
    # 读取文件的全体内容
    u = f.split(‘\n’)[0]        # 以回车为划分抽出用户名
    p = f.split(‘\n’)[0]        # 以回车为划分收取密码
    m = p.split(‘\n’)[0]     #
以回车为分割符,抽取密码的欧洲经济共同体内容
    password[p] = m
  pd.close()

rb

  内需专注的是:文件操作时,应内定字符编码格式(分化的操作系统,会并发字符编码错误),encoding代表编码集,依据文件的莫过于保存编码举办获取数据,对于大家来说,愈来愈多的是utf-八。

wb
ab

  rb读抽出来的多少是bytes类型,在rb形式下,不能选用encoding字符集。rb越来越多的是行使在读取非文本文件的时候,诸如读取MP5、图像‘摄像等音讯的时候就需求用到rb,因为这种多少是未有办法直接突显出来的,在贯彻公文的上传下载时也会用到rb。

闭馆文件

    f.readline()
是单排1行的读取数据,但是在读抽出来的数码结尾处会有3个\n,那时就要求我们调用strip()方法将其去掉。

文本句柄.close()

  循环读取数据这种格局是很好的,每一次只读收取1行内容,从而就避免了发生内部存款和储蓄器溢出的标题。

操作文件:

  注意:读取完的公文句柄一定要关掉,使用pd.close()。

detach

 

占位

2、写模式(w、wb、a)

fileno(再次回到文件描述符,用于底层操作系统的 I/O 操作)

  写的时候要留心,假诺未有公文,则会自行创设文件,如若文件已经存在,则会将原著件中的内容总体去除后再将新剧情写入到文件中:

fid = 文件句柄.fileno()

    lock_user = open(“lock_file.txt”, mode=’a’, encoding=’utf-8′)
  #  将被锁定的用户名增添写入lock_file.txt文件中
    lock_user.write(username+’\n’)
    lock_user.close()
    print(“您的密码输入错误超过二回,用户被锁定!”)

print(fid)

  wb形式下,能够不钦赐张开文件的编码集,不过在写文件的时候必须将字符串转化成utf-8的bytes数据。

flush(刷新缓冲区,将缓冲区中的数据及时写入文件)

  a 追加格局下, 写入的内容会加在结尾。

文本句柄.flush()

 

isatty(推断文件是或不是连接到一个极端设备,重回布尔值)

修改完后代码如下:

文件句柄.isatty()

 1 #coding = utf-8
 2 import datetime
 3 import os
 4 today = datetime.date.today()                   # 读取当前日期
 5 password = {}                                   # 创建字典
 6 pd = open('user_file.txt', mode='r', encoding='utf-8')          # 以只读的模式打开,确保文件存在,否则报错
 7 for f in pd.readlines():                       # 读取文件的全部内容
 8     u = f.split('\n')[0]                       # 以回车为分割取出用户名
 9     p = f.split('\n')[0]                       # 以回车为分割取出密码
10     m = p.split('\n')[0]                       # 以回车为分割符,取出密码的完整内容
11     password[p] = m
12 pd.close()
13 lock = {}
14 user = {}
15 lock_info = open('lock_file.txt', mode='r', encoding='utf-8')           # 以只读的模式打开
16 user_info = open('user_file.txt', mode='r', encoding='utf-8')           # 以只读的模式打开
17 for i in lock_info.readlines():
18     k1 = i.split('\n')[0]
19     lock[k1] = k1
20 for u in user_info.readlines():
21     n = u.split('\n')[0]
22     user[n] = n
23 count = 0
24 lock_info.close()
25 user_info.close()
26 username = input("请输入您的用户名:").strip()
27 if username in lock.keys():
28     print("该用户已被锁定,无法正常登录!")
29 elif username in user.keys():
30     pwd = input("请输入您的密码:").strip()
31     if pwd == password[username]:
32         welcome = """
33        -----------Welcome info----------
34        登录成功!
35        欢迎您:%s,今天是:%s.
36        ---------------End--------------
37        """ % (username, today)
38         print(welcome)
39     else:
40         while count < 2:
41             pwd = input("密码错误,请重新输入:").strip()
42             if pwd == password[username]:
43                 welcome = """
44               -----------Welcome info----------
45               登录成功!
46               欢迎您:%s,今天是:%s.
47               ---------------End--------------
48               """ % (username, today)
49                 print(welcome)
50                 break
51             count += 1
52         else:
53             lock_user = open("lock_file.txt", mode='a', encoding='utf-8')              # 将被锁定的用户名追加写入lock_file.txt文件中
54             lock_user.write(username+'\n')
55             lock_user.close()
56             print("您的密码输入错误超过三次,用户被锁定!")
57 else:
58     print("无效的用户名,系统退出!")
59     exit()

read(从文件中读取钦命的字符数,暗许读取全体)

 

str = 文件句柄.read() #读取整个文件
str一 = 文件句柄.read(10) #读取文件前十个字符
readable(剖断文件是还是不是可读,重临布尔值)

文本句柄.readable()

readline(每一回最多读取一行数据,每行的末尾包蕴换行符’\n’)

print(文件句柄.readline()) #读取第3行数据
print(文件句柄.readline(3)) #读取第3行前二个字符
print(文件句柄.readline()) #读取第1行剩余字符
print(文件句柄.readline()) #读取第一行

seek(移动文件读取的指针,固然文件中蕴藏普通话,移动指针必须是3的倍数,不然会报错,因为1个华语字符等于一个字节)

文本句柄.seek(陆)

seekable(剖断文件指针是不是可用,再次回到布尔值)

文件句柄.seekable()

tell(获取指针位置)

文本句柄.tell()

truncate(截断,把指针前面包车型大巴剧情剔除,并写入文件,要在可写方式下操作)

f = open(‘text.txt’,’r+’,encoding=’utf-8′)
f.seek(9) #把指针移动到第7个字节前边(即第叁个汉语前面)
f.truncate() #把第壹个粤语后边的字符删除,并写入文件
f.close()

writable(推断文件是不是可写,重返布尔值)

文件句柄.writable()

write(把字符串写入文件,并赶回字符数)

文件句柄.write(‘字符串’)

你或者感兴趣的稿子:

  • Python
    文件读写操作实例详解
  • Python3写入文件常用方法实例解析
  • Python三读取文件常用方法实例深入分析
  • Python
    文件操作的详解及实例
  • Python读写文件格局总括
  • Python文件操作类操作实例详解

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有