结构 test_file_read
def read_file(): """读取文件""" file_name = 'test.txt' # 使用绝对路径 file_path = 'E:\\py-learn\\chapter07\\test.txt' # 使用 /也可以 # 使用普通的方式来打开文件 #f = open(file_name, encoding='utf-8') # with open(file_name, encoding='utf-8') as f: with open(file_path, encoding='utf-8') as f: # 读文件所有内容 #rest = f.read() #print(rest) # 读取指定的几个内容 #rest = f.read(8) #print(rest) #print(f.read(8)) #随机读取 #f.seek(10) #print(f.read(5)) # 按行读取 # rest = f.readline(8) # print(rest) # print(f.readline(8)) # 读取所有行 rest = f.readlines() print(len(rest)) print(rest) for i in rest: print(i) # 关闭文件 #f.close() if __name__ == '__main__': read_file()test_file_write
import random from datetime import datetime def write_file(): """写入文件""" file_name = 'write_test.txt' # 以写入的方式打开文件 f = open(file_name, 'w') # 写入一行 f.write('hello') # 换行符 f.write('\n') # 再写入一行 f.write('world') f.close() def write_mult_line(): """向文件中写入多行内容""" file_name = 'write_mult_line.txt' with open(file_name, 'w', encoding='utf-8') as f: l = ['第一行', '\n', '第二行', '\n', '第三行'] f.writelines(l) def write_user_log(): """记录用户的日志""" # 记录时间+记录用户的ID rest = '用户:{0}-访问时间{1}'.format(random.randint(1000, 9999), datetime.now()) print(rest) # 文件名称 file_name = 'write_user_log.txt' with open(file_name, 'a', encoding='utf-8') as f: f.write(rest) f.write('\n') def read_and_write(): """先读,再写入""" file_name = 'read_and_write.txt' with open(file_name, 'r+', encoding='utf-8') as f: read_rest = f.read() # 如果里面没有1,就写入一行数据 bbb # 如果有1.写入一行数据 aaa if '1' in read_rest: f.write('bbb') else: f.write('aaa') f.write('\n') if __name__ == '__main__': # write_file() # write_mult_line() # write_user_log() read_and_write()read_and_write.txt
1aaa bbbtest.txt
2014年,大学毕业,他选择报考警校穿上心仪已久的警服,成为了一名光荣的人民警察,这一年他25岁。 面对人生的岔路,他毅然选择了警徽,把过去的荣耀放在一边,开启了人生新篇章。 他说自己的梦想就是在机铁轰鸣中守护申城的平安。 2-2014年,大学毕业,他选择报考警校穿上心仪已久的警服,成为了一名光荣的人民警察,这一年他25岁。面对人生的岔路,他毅然选择了警徽,把过去的荣耀放在一边,开启了人生新篇章。他说自己的梦想就是在机铁轰鸣中守护申城的平安。test2.txt
File "E:/py-learn/chapter07/test_file_read.py", line 19, in read_filewrite_mult_line.txt
第一行 第二行 第三行write_test.txt
hello worldwrite_user_log.txt
用户:3974-访问时间2020-10-05 14:57:48.706008 用户:6492-访问时间2020-10-05 14:57:49.200012 用户:7291-访问时间2020-10-05 14:57:49.568180 用户:9526-访问时间2020-10-05 14:57:49.968265引用:
from datetime import datetime from random import randint def guide_page(guide_word): """ 游戏启动引导语句控制台输出 """ print('*' * 10 + guide_word + '*' * 10) def all_num(n): """ 判断n是否为数字类型 """ return n.isdigit() def num_equal(ls): """ 判断列表或元组是否相等 """ return ls[0] == ls[1] def set_final_num(num1, num2): """ 获取区间内随机数,用于用户猜数字 """ num_list = [num1, num2] # 返回一个符合条件的filter对象 num_str_list = list(filter(lambda n: all_num(n), num_list)) # 判断用户输入的是否为数字,并且两个数字不能相等,且起始区间要小于终止区间 if len(num_str_list) != 2: return False num_list = construct_range_value(num1, num2) if num_equal(num_list) or num_list[0] > num_list[1]: return False print("所产生的随机数区间为:[{0}, {1}]".format(num1, num2)) return randint(num_list[0], num_list[1]) def construct_range_value(num1, num2): """ 转换用户输入的两个区间数字str类型为int类型 """ return [int(num1), int(num2)] def check_num_legal(num, ls): """ 判断num是否在区间范围内,不在返回False """ if not all_num(num): return False num = int(num) if num < ls[0] or num > ls[1]: return False return True def write_record(times, value): """ 记录每次输入的有效数字的游戏过程 """ file_name = 'record.txt' value = "{0}: {1}\n".format(times, value) with open(file_name, 'a', encoding='utf-8') as f: f.write(value) f.flush() def main(): """ 游戏入口函数 """ while True: guide_page('欢迎进入数字猜猜猜小游戏') num1 = input('数字区间起始值:') num2 = input('数字区间终止值:') # 随机生成数 random_final_num = set_final_num(num1, num2) if not random_final_num: print("对不起,请输入有效区间数字!") continue # 区间数字列表 n1_n2 = construct_range_value(num1, num2) # 猜测次数 count = 1 while True: guess_num = input("请输入您猜测的数字:") # 检查用户输入的字符合法性 is_legal = check_num_legal(guess_num, n1_n2) guess_num = int(guess_num) if not is_legal: print("对不起,您输入的数字未在指定区间!") continue now_time = datetime.now() if guess_num > random_final_num: write_record(now_time, "第{0}次猜测的数字为:{1}".format(count, guess_num)) count += 1 print("higher than the answer") continue elif guess_num < random_final_num: write_record(now_time, "第{0}次猜测的数字为:{1}".format(count, guess_num)) count += 1 print("lower than the answer") continue else: write_record(now_time, "第{0}次猜测的数字为:{1},并且赢得了游戏!".format(count, guess_num)) print("恭喜您,只用了{0}次就赢得了游戏!".format(count)) return if __name__ == '__main__': main()