-
Notifications
You must be signed in to change notification settings - Fork 2
/
FindFunc.py
66 lines (49 loc) · 1.32 KB
/
FindFunc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import sys
from os import walk
def readFile(fname, func, encoding):
with open(fname, 'r', encoding=encoding) as fobj:
content = fobj.read()
if func in content:
print(f'[{encoding}] {fname}')
print(f'找到 {func}')
count = 0
def FindStrInFile(path, func):
result = []
f = []
d = []
fullpath = None
for (dirpath, dirnames, filenames) in walk(path):
fullpath = dirpath
d.extend(dirnames)
f.extend(filenames)
break
if '.git' in d:
d.remove('.git')
if '.gitattributes' in f:
f.remove('.gitattributes')
if '.gitignore' in f:
f.remove('.gitignore')
if len(f) == 0:
return
f = [f'{fullpath}/{x}' for x in f if '.tar' not in x]
# print('\n'.join(f))
# print('\n'.join(d))
# print(fullpath)
# print(d)
global count
count += len(f)
for fname in f:
try:
readFile(fname, func, 'Big5')
except UnicodeDecodeError:
pass
try:
readFile(fname, func, 'Utf-8')
except UnicodeDecodeError:
# print(f'{fname} decode error')
pass
# sys.exit()
for subpath in d:
FindStrInFile(f'{fullpath}/{subpath}', func)
FindStrInFile('D:/Git/pttbbs', '儲存檔案')
print(count)