##8.9.1
import shelve, pyperclip, sys
mcbShelf = shelve.open('mcb')
if len(sys.argv) == 3:
if sys.argv[1].lower() == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif sys.argv[1].lower() == 'delete':
del mcbShelf[sys.argv[2]]
elif len(sys.argv) == 2:
if sys.argv[1].lower() == 'list':
pyperclip.copy(str(list(mcbShelf.keys())))
if sys.argv[1].lower() == 'delete':
del mcbShelf[:]
else:
pyperclip.copy(mcbShelf[sys.argv[1]])
mcbShelf.close()
##8.9.2
import re, os
print('欢迎进入《疯狂填词》游戏')
lujing = input('请输入本次游戏文件路径(例如:C:\\Users\\lucky\\biancheng\\tianci.txt):\n')
while os.path.isfile(lujing) == False:
lujing = input('输入信息有误,请重新输入:\n')
wenjian_open = open(lujing)
wenjian_read = wenjian_open.read()
wenjian_open.close()
zhengze1 = re.compile(r'[A-Z]{2,}')
xutihuan = zhengze1.findall(wenjian_read)
for i in xutihuan:
if i[0] == 'A':
tianci = input('Enter an ' + i + ':\n' )
while tianci.isalnum() == False:
tianci = input('填词不可为空:\n')
else:
tianci = input('Enter a ' + i + ':\n' )
while tianci.isalnum() == False:
tianci = input('填词不可为空:\n')
zhengze2 = re.compile(r''+i+'')
wenjian_read = zhengze2.sub(tianci, wenjian_read)
print(wenjian_read)
wenjian_new = re.compile(r'[A-Za-z0-9]+\.txt').search(lujing).group().rstrip('.txt')+ '_new.txt'
open(wenjian_new, 'w').write(wenjian_read)
##8.9.3
import re, os
lujing = input('请输入目录路径:')
while os.path.isdir(lujing) == False:
lujing = input('路径无效,请重新输入:')
wenjian_list = os.listdir(lujing)
shaixuan = input('请输入本次筛选的正则表达式: \\')
for a in wenjian_list:
wenjian_txt = re.compile(r'.+\.txt').search(a)
if wenjian_txt == None:
continue
else:
wenjian_txt_open = open(os.path.join(lujing,wenjian_txt.group())).read()
shaixuan_txt = re.compile(r'\%s' %shaixuan).findall(wenjian_txt_open)
print('\n'.join(shaixuan_txt))
PS:在8.9.3代码中,只能在用户输入的正则表达式是可读取的情况下运行,否则程序将报错,暂无法解决,待后续更新!