python文件和异常

从文件中读取数据

with open (r'文件地址','a') as file_object:
	for line in file_object:		#逐行读取
		print(line)
	lines=file_object.readlines()	#创建一个包含文件各行内容的列表
for line in lines:					#逐行打印
	print(line.rstrip())		

写入文件

#只写:a,只读:r,附加:a,读写:r+

filename='guest.txt'
while 1:
	with open (filename,'a') as guest:
		name=input("Please input your name(enter 'q' to quit):")
		if name=='q':
			break
		else:
			guest.write(name+"\n")
			print("Hello,"+name+"!")
	with open (filename,'r') as guest:
		guest=guest.read()
		print(guest)
	

输出结果:
输出结果

异常

可以提前处理异常来使程序正常运行
//try-except代码块、使用异常避免崩溃

#加法计算器(处理用户输入非数字的情况)
while 1:
	num1=input("Please input a number (enter 'q' to quit):")
	if num1=='q':
		break
	else:
		num2=input("Please input a num (enter 'q' to quit):")
		if num1=='q':
			break
		else:
			try:
				sum=int(num1)+int(num2)
				print(str(num1)+"+"+str(num2)+"="+str(sum))
			expect ValueError:
				print('Error,please input a number')

输出结果:
输出结果
//分析文本

#读取特定单词在文本中出现了多少次
def novel_words(location,word):
    #处理空文件异常,避免崩溃
    try:
        with open (location,'r') as novel:
            novel=novel.read()
    except FileNotFoundError:
            print("Your file can't be found , please input again!")
    else:		
        #读小说多少单词
        #split把小说分成列表存在words中
        words=novel.split()
        num_words=len(words)
        print("The number of this novel:"+str(num_words))
        #读某个单词出现次数
        num_word=novel.lower().count(word)
        print("The number of word "+"'"+word+"'"+" in this novel: "+str(num_word))
while 1:
    location=input("Please input the location of the novel (enter 'q' to quit):")
    if location == 'q':
        break
    else:
        word=input("Please input the word you want to look for in this novel (enter 'q' to quit):")		
        if word=='q':
            break
        else:
            novel_words(location,word)

输出结果:
输出结果

存储数据

使用 json 保存和读取用户生成的数据

#存储用户输入的数字
import json
try:
	favorite_number='favorite_number.json'
	with open(favorite_number) as favorite_num:
		num=json.load(favorite_num)
except FileNotFoundError:
	with open(favorite_number,'w') as favorite_num:
		number=input("Please input your favorite number:")
		json.dump(favorite_num,number)
else:
	print("I know your favorite number ! It's "+num)

输出结果:
输出结果
重构:把代码分成一系列完成具体工作的函数

import json

def get_stored_username():
    """Get stored username if available."""
    filename = 'username.json'
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username

def get_new_username():
    """Prompt for a new username."""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
    return username

def greet_user():
    """Greet the user by name."""
    username = get_stored_username()
    if username:
        print("Welcome back, " + username + "!")
    else:
        username = get_new_username()
        print("We'll remember you when you come back, " + username + "!")

greet_user()

输出结果:
在这里插入图片描述
最后这个重构有点绕。。。

发布了45 篇原创文章 · 获赞 14 · 访问量 2496

猜你喜欢

转载自blog.csdn.net/qq_44357371/article/details/97615064