fortune/tools/do_uniq.py

slight imporvements to do_uniq.py:
	- use with open()
	- don't depend on sys.argv directly
	- fix style
This commit is contained in:
Eitan Adler 2015-04-02 22:42:23 +00:00
parent 16a38a930d
commit 62e8d5e1b0
1 changed files with 32 additions and 27 deletions

View File

@ -4,7 +4,8 @@
# #
# an aggressive little script for trimming duplicate cookies # an aggressive little script for trimming duplicate cookies
import re, sys import argparse
import re
wordlist = [ wordlist = [
'hadnot', 'hadnot',
@ -15,6 +16,7 @@ wordlist = [
'a', 'd', 'i', 'm', 's', 'a', 'd', 'i', 'm', 's',
] ]
def hash(fortune): def hash(fortune):
f = fortune f = fortune
f = f.lower() f = f.lower()
@ -27,37 +29,40 @@ def hash(fortune):
# f = f[-30:] # f = f[-30:]
return f return f
def edit(datfile): def edit(datfile):
dups = {} dups = {}
fortunes = [] fortunes = []
fortune = "" fortune = ""
for line in file(datfile): with open(datfile, "r") as datfiledf:
if line == "%\n": for line in datfiledf:
key = hash(fortune) if line == "%\n":
if key not in dups: key = hash(fortune)
dups[key] = [] if key not in dups:
dups[key].append(fortune) dups[key] = []
fortunes.append(fortune) dups[key].append(fortune)
fortune = "" fortunes.append(fortune)
else: fortune = ""
fortune += line else:
fortune += line
for key in list(dups.keys()): for key in list(dups.keys()):
if len(dups[key]) == 1: if len(dups[key]) == 1:
del dups[key] del dups[key]
o = file(datfile + '~', "w") with open(datfile + "~", "w") as o:
for fortune in fortunes: for fortune in fortunes:
key = hash(fortune) key = hash(fortune)
if key in dups: if key in dups:
print('\n' * 50) print('\n' * 50)
for f in dups[key]: for f in dups[key]:
if f != fortune: if f != fortune:
print(f, '%') print(f, '%')
print(fortune, '%') print(fortune, '%')
if input("Remove last fortune? ") == 'y': if input("Remove last fortune? ") == 'y':
del dups[key] del dups[key]
continue continue
o.write(fortune + "%\n") o.write(fortune + "%\n")
o.close()
assert len(sys.argv) == 2 parser = argparse.ArgumentParser(description="trimming duplicate cookies")
edit(sys.argv[1]) parser.add_argument("filename", type=str, nargs=1)
args = parser.parse_args()
edit(args.filename[0])