# 1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
#
# 2. 修改文件内容,把文件中的alex都替换成SB
# with open('a.txt',mode='r',encoding='utf-8') as f:
# lines=f.readlines()
# sum=0
# for line in lines:
# l = line.replace('\n','')
# k = l.split(' ')
# sum=sum + int(k[1])*int(k[2])
# print(sum)
# import os
# with open('e.txt','r',encoding='utf-8') as read_f,\
# open('.e.txt','w',encoding='utf-8') as write_f:
# for line in read_f:
# line=line.replace('alex','sb')
# write_f.write(line)
# os.remove('e.txt')
# os.rename('.e.txt','e.txt')
# 练习,利用b模式,编写一个cp工具,要求如下:
#
# 1. 既可以拷贝文本又可以拷贝视频,图片等文件
#
# 2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target_file
#
# 提示:可以用import sys,然后用sys.argv获取脚本后面跟的参数
# # cp source_file dst_file
# import sys
# #Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始
# sfile=sys.argv[1]#源文件
# dfile=sys.argv[2]#目标文件
#
# with open(sfile,'rb') as read_f,open(dfile,'wb') as write_f:
# data=read_f.read()
# write_f.write(data)
# 1、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作
# def modify_file(filename,old,new):
# import os
# with open(filename,'r',encoding='utf-8') as read_f,\
# open('.bak.swap','w',encoding='utf-8') as write_f:
# for line in read_f:
# if old in line:
# line=line.replace(old,new)
# write_f.write(line)
# os.remove(filename)
# os.rename('.bak.swap',filename)
#
# modify_file('/Users/jieli/PycharmProjects/爬虫/a.txt','alex','SB')
# 2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
# def check_str(msg):
# res={
# 'num':0,
# 'string':0,
# 'space':0,
# 'other':0,
# }
# for s in msg:
# if s.isdigit():
# res['num']+=1
# elif s.isalpha():
# res['string']+=1
# elif s.isspace():
# res['space']+=1
# else:
# res['other']+=1
# return res
#
# res=check_str('hello name:aSB passowrd:alex3714')
# print(res)
# 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
# def file_len(file):
# if len(file)>5:
#
# return 1
# else:
# return 0
# print(file_len([1,2,3,4]))
# 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# def func1(seq):
# if len(seq) > 2:
# seq=seq[0:2]
# return seq
# print(func1([1,2,3,4]))
# 5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
# def func2(seq):
# return seq[::2]
# print(func2([1,2,3,4,5,6,7]))
# 6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# PS:字典中的value只能是字符串或列表
# def func3(dic):
# d={}
# for k,v in dic.items():
# if len(v) > 2:
# d[k]=v[0:2]
# return d
# print(func3({'k1':'abcdef','k2':[1,2,3,4],'k3':('a','b','c')}))