若文件原来就有内容,w+ open 完之后,文件内容就被清空了
open操作若不指定打开模式,默认打开模式是'r'
补充点:
1、如何将1到3000输出为 0001 到 3000
print('{0:0>4}'.format(2))
第6章1-字符串及正则表达式 p63
2、随机数如何使用
导入模块
import random
import time
获取当前时间戳 作为随机数的种子
now=time.time() 返回一个浮点数
random.seed(now) now作为浮点数是否可以作为seed的参数?(应该是可以的,程序没报错)也可以不加参数,默认是当前的时间
randint(a,b) 生成一个[a,b]之间的整数
3、判断路径是否是有效路径?
os.path模块中的isdir(path)方法
引入方法:import os.path
4、如何创建文件?
f=open(‘f.txt’,‘w’) 就是通过open操作
个人编码解答:
import random
import time
import os.path
import os
# 不传参,以当前时间作为随机数种子
random.seed()
def create_file(path):
# 先判断路径是否合法
if os.path.isdir(path)==False:
print(path,'为不合法路径,无法进行创建文件')
return
item_lst=['水果','烟酒','粮油','肉蛋','蔬菜']
# 改变工作目录到path
os.chdir(path)
print('当前工作目录为:',os.getcwd())
# 下面开始批量创建文件
for i in range(1,3001):
# 构造文件名字符串
filename='{0:0>4}_{1}_{2:9x}.txt'.format(i,random.choice(item_lst),random.randint(0,0xfffffffff))
print(filename)
with open(filename,'w') as file:
pass
create_file('E:\斗鱼视频\直播数据')
# 拓展:若路径不存在可以先创建路径,再在此路径下创建文件
# 教程代码
# if __name__=='__main__'
教程解法 + 自己改进(若路径不存在,则先创建路径)
教程解法和自己的解法的主要区别就是:在16进制随机数的生成上,我是通过randint指定范围0到0xfffffffff之间随机,而教程是通过9此循环每次循环随机取以为十六进制数的可能取值
import random
import os
import os.path
import time
def create_filename(path):
if os.path.isdir(path)==False:
os.makedirs(path)
os.chdir(path)
print('当前的工作路径:',os.getcwd())
filename_lst=[]
lst=['水果','烟酒','粮油','肉蛋','蔬菜']
code=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
for i in range(1,3001):
filename='{0:0>4}_'.format(i)
filename+=random.choice(lst)+'_'
s=''
for j in range(9):
s+=random.choice(code)
filename+=s
#print(filename)
# 创建文件
with open(filename,'w') as file:
pass
if __name__=='__main__':
random.seed(time.time())
create_filename(r'E:\斗鱼视频\直播数据\2')
import os
import os.path
def create_dir(newdir,num):
if num<=0 or type(num)!=type(1):
print('输入的个数不符合规范,程序终止退出')
return
if os.path.exists(newdir)==False:
os.makedirs(newdir)
raw_work_path=os.getcwd()
print('原工作目录:',raw_work_path)
os.chdir(newdir)
print('现工作目录:',os.getcwd())
for i in range(1,num+1):
if os.path.exists(str(i))==False:
os.mkdir(str(i))
os.chdir(raw_work_path)
if __name__=='__main__':
create_dir('E:\斗鱼视频\直播数据',5)
print('文件创建完成')
print('当前工作路径:',os.getcwd())
import time
import os
import os.path
user_dict={'admin':'admin'}
if __name__=='__main__':
agent_input = input('请输入用户名:')
password_input = input('请输入密码:')
res = user_dict.get(agent_input)
if res == None or res != password_input:
print('用户名或密码不正确')
else:
print('登录成功')
with open('log.txt', 'a+', encoding='UTF-8') as file:
login_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
print(login_time)
file.write('用户名:{0},登录时间:{1}\n'.format(agent_input,login_time))
while True:
print('输入提示数字,执行相应操作:0.退出 1.查看登录日志')
op_num=eval(input('请输入操作数字:'))
match op_num:
case 0:
print('退出成功')
break
case 1:
print('查看登录日志')
with open('log.txt', 'r+', encoding='UTF-8') as file:
print(file.read())
case _:
print('输入的数字有误,请重新输入')
没什么好补充的,注意复杂操作的函数封装
import os
import os.path
item_lst=[
'订单|若您有任何订单问题...',
'物流|若您有任何物流问题...',
'账户|若您有任何账户问题...',
'支付|若您有任何支付问题...'
]
if __name__=='__main__':
with open('replay.txt','r',encoding='UTF-8') as file:
lst=file.readlines()
keyword_lst=[]
match_flag=False
for item in lst:
keyword_lst.append(item[0:2])
print(keyword_lst)
ans=input('HI,xxx你好,小蜜在此等主人很久了,有什么烦恼快和小蜜说说吧~')
while True:
if ans=='bye':
print('小主再见')
break
for i in range(len(keyword_lst)):
if keyword_lst[i] in ans:
print(lst[i][3:])
match_flag=True
if match_flag==False:
ans=input('不知道,推出请输入bye')
else:
ans=input('还可以问,推出请输入bye')
没有注意函数的提取
还有一个是readline函数的使用
改善之后:
import os
import os.path
def get_reply(question):
with open('replay.txt', 'r', encoding='UTF-8') as file:
s=file.readline()
while s!='':
lst=s.split('|')
keyword=lst[0]
reply=lst[1]
print(keyword)
print(reply)
if reply in question:
return reply
s = file.readline()
return False
if __name__=='__main__':
ans=input('HI,xxx你好,小蜜在此等主人很久了,有什么烦恼快和小蜜说说吧~')
while True:
if ans=='bye':
print('小主再见')
break
reply=get_reply(ans)
if reply==False
ans=input('不知道,推出请输入bye')
else:
print(reply)
ans=input('还可以问,推出请输入bye')