#练习题网站:https://www.xz577.com/j/129.html#文件与异常#同名文件下可打开withopen('pi.txt')as file_object:
contents=file_object.read()print(contents)print(contents.rstrip())#read()函数会默认返回空行,所以可以用rstrip()删除#打开同目录下的文件夹中包含的文件withopen('practice\pi.txt')as file_object:#windows使用反斜杠'\',当然正斜杠也可以
contents=file_object.read()print(contents)#打开任意处的文件:精确查找withopen('C:\CODING\.idea\practice\pi.txt')as file_object:#上面的r是为了保证万无一失 因为反斜在python里面为转义字符#读取整个文件进行打印
contents=file_object.read()print(contents.rstrip())#逐行读取 遍历整个文件
source='C:\CODING\.idea\practice\pi.txt'withopen(source)as file_object:for line in file_object:print(line.rstrip())#因为默认会多空行所以用rtrip#使用with时,open返回的对象只在with代码块中使用#如果想要在with之外使用,那么先将文件的各行储存在列表中
source='C:\CODING\.idea\practice\pi.txt'withopen(source)as file_object:
lines=file_object.readlines()#readlines读取每行并存储在列表中#注意不是readline!!!for line in lines:print(line.rstrip())#使用文件内的内容 此处是把pi存储在字符串内
pi_string=''for line in lines:
pi_string+=line.strip()print(pi_string)print(len(pi_string))#如果想把字符串转化为数值 可以使用int或者float
a=float(pi_string)print(a)#10.2练习题
source='C:\CODING\.idea\practice\pi.txt'#将python替换为cwithopen(source)as file_object:
lines=file_object.readlines()for line in lines:print(line.replace('python','c').rstrip())#写入文件#w为写入模式,r为读取模式,a为附加模式,r+为读取和写入#注意当文件不存在时,将自动创建,但是当文件#但是当文件不存在的时候将自动创建文件#如果文件存在使用了w那么原来的内容将被清除
file_name='p.txt'withopen(file_name,'w')as file_object:
file_object.write("I love python!!!\nAnd I am so crazy about programmming!!!")#下面是三种方法:withopen(file_name)as file_object:
content = file_object.read()print(content)for line in file_object:print(line.rstrip())
lines = file_object.readlines()for line in lines:print(line.rstrip())#写入多行
file_name='p.txt'withopen(file_name,'w')as file_object:
file_object.write("hello world!\n")#注意此处如果不加\n那么两行就会变成一行
file_object.write("I love python!")withopen(file_name)as file_object:for line in file_object:print(line.rstrip())#附加模式写入多行withopen(file_name,'a')as file_object:
file_object.write("\nlets do this\n")#注意此处前面需要一个\n 否则会和成一行
file_object.write("I love python!")withopen(file_name)as file_object:for line in file_object:print(line.rstrip())#10.3练习 输入访客名称
file_name='hello.txt'withopen(file_name,'w')as file_object:
a=input("Your name:")
file_object.write(a)withopen(file_name)as file_object:
con=file_object.read()print(con.rstrip())#10.4练习 多次输入名字 每个名字一行
file_name='hello.txt'withopen(file_name,'w')as file_object:
active=Truewhile active:
a=input("Enter your name:")print("Hello!"+a)
file_object.write(a+'\n')
b=input("Do you want to go on? YES PR NO")if b!='YES':
active=Falsewithopen(file_name)as file_object:
con=file_object.read()print(con.rstrip())#使用try-except代码块try:print(5/0)except ZeroDivisionError:print("You cannot divide by Zero!")#使用代码块避免崩溃whileTrue:
f_n=input("First number:")if f_n=='q':break
s_n=input("Second number:")if s_n=='q':breaktry:
answer=int(f_n)/int(s_n)print(answer)except ZeroDivisionError:print("You cannot do this!")#当然也可以使用elsetry:
answer=int(f_n)/int(s_n)except ZeroDivisionError:print("You cannot do this!")else:print(answer)#处理FileNotFoundError
file_name="pppp.txt"try:withopen(file_name)as file_o:
con=file_o.read()print(con.rstrip())except FileNotFoundError:print(file_name+".txt does not exist!")#分析文本
file_name="hello.txt"try:withopen(file_name)as f_o:
con=f_o.read()except FileNotFoundError:print("Sorry! The file cnnot be found!")else:
words=con.split()#split将字符串按照空格/行 切成列表
s=len(words)print("The file "+file_name+".txt has about "+str(s)+" words.")#为了方面使用 可以设置函数defcount(file_name):try:withopen(file_name)as f_o:
con = f_o.read()except FileNotFoundError:print("Sorry! The file cnnot be found!")else:
words = con.split()# split将字符串按照空格/行 切成列表
s =len(words)print("The file "+ file_name +".txt has about "+str(s)+" words.")
file_name="hello.txt"
count(file_name)#加循环
file_collection=['hello.txt','pp.txt','hahah.txt']for file_name in file_collection:
count(file_name)#自主选择报告哪些程序错误try:--snip--except:passelse:--snip--#10.6+10.7 练习 加法运算 实现多次输入 错误提示defadddd(a,b):try:
a=int(a)
b=int(b)except ValueError:print("Please enter numbers instead of text.")else:print(a+b)whileTrue:
a=input("Enter the first number:")
b=input("Enter the second number:")
adddd(a,b)
c=input("Go on or not?YES OR NO")if c!="YES":break#10.8练习 读取文件 异常
file_name=['cats.txt','dogs.txt','hh.txt']withopen(file_name[0],'w')as file_o:
file_o.write("mory\njojo\nhapo")withopen(file_name[1],'w')as file_o:
file_o.write("mmory\njkkojo\nhhhhapo")defread_name(a):try:withopen(i)as ob:
con=ob.read()print(con.rstrip())except FileNotFoundError:print("The file "+i+" cannot be found.")for i in file_name:
read_name(i)#存储数据#使用json模块来进行存储:将数据存储在文件对象中,格式是列表import json
numbers=[2,3,4,5]
file_name='numbersjson.txt'withopen(file_name,'w')as ob:#借助ob对象最终把数据存储在number.json里面
json.dump(numbers,ob)#用load函数来读出withopen(file_name)as ob:
number=json.load(ob)print(number)#保存和读取用户输入数据+重构import json
defget_user():
file_name='usernamer.txt'try:withopen(file_name)as file_ob:
username=json.load(file_ob)except FileNotFoundError:
username=input("What's your name?")withopen(file_name,'w')as file_ob:
json.dump(username,file_ob)print("We will remember when you are back,"+username+"!")else:print("Welcome back!"+username)
get_user()#进而在另一个.py模块中import ha
ha.get_user()#函数进一步的重构import json
defget_user_stored():
file_name='userna.txt'try:withopen(file_name)as file_ob:
username=json.load(file_ob)except FileNotFoundError:returnNoneelse:return username
defgreet_use():
username=get_user_stored()if username:print("Welcome back!"+ username)else:
username=input("What's your name?")
file_name ='userna.txt'withopen(file_name,'w')as file_ob:
json.dump(username,file_ob)print("We will remember when you are back,"+username+"!")
greet_use()#函数进进一步的重构import json
defget_user_stored():
file_name='userna.txt'try:withopen(file_name)as file_ob:
username=json.load(file_ob)except FileNotFoundError:returnNoneelse:return username
defget_new_name():#函数定义时的括号以及冒号!!!
username =input("What's your name?")
file_name ='userna.txt'withopen(file_name,'w')as file_ob:
json.dump(username, file_ob)return username
defgreet_use():
username=get_user_stored()if username:print("Welcome back!"+ username)else:
username=get_new_name()print("We will remember when you are back,"+username+"!")
greet_use()#重构是为了目的性更强#10.12 功能:#记录用户输入数字;#存储自定义文件内;#如果不输入数字提示并且可以重新输入#可以多次循环输入#纪念一下这个实现完整功能的程序!!奥利给!!import json
defnum_stored():try:
f_n=input("What's your favorite number?\n")withopen(file_name,'w')as ob:
json.dump(f_n,ob)
f_n =int(f_n)except ValueError:print("Enter number please~")return0defread_num(file_name):withopen(file_name)as ob:
con=json.load(ob)#有参数!!!print("I know your favorite number is "+str(con)+".")defenter_num(file_name):whileTrue:
num_stored()
read_num(file_name)
a=input("\nGO ON OR NOT? YES OR NO\n")if a!="YES":break
file_name=input("where you want to store your number?\n(plz end with'.txt')\n")
mm=num_stored()whileTrue:if mm==0:
num_stored()else:
enter_num(file_name)
oo=input("what to stop?YES OR NO")if oo!='YES':break#10.13 实现#询问老名字是否是新用户的名字,如果不是,提示重新输入import json
defusername_stored():
username=input("What's your name?")print("Hello! We will remember your name when you come back next time, "+username+"!")
file_name='hello.txt'withopen(file_name,'w')as ob:
json.dump(username,ob)return username
defusername_out():
file_name ='hello.txt'withopen(file_name)as ob:
username=json.load(ob)return username
defgreet_comer():
old_name=username_out()
greet=input("Hello! Is "+str(old_name)+" your name?\nY or N\n")if greet !='Y':
username_stored()print(username_out())
greet_comer()#在另外一个同名文件夹下可以使用上面的函数#只用greet_comer()就可以#重构的好处是程序明确便于后期的修改 以及一个特定函数可以不断嵌套在其他函数里面 多次使用!import ha
ha.greet_comer()