96 lines
2.9 KiB
Python
96 lines
2.9 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os
|
|
|
|
|
|
def has_match(line):
|
|
"""check if file current line matches py3_strs.
|
|
|
|
Args:
|
|
line: Current line to check.
|
|
|
|
return:
|
|
Boolean True or False.
|
|
"""
|
|
py3_strs = [
|
|
"#!/usr/bin/python3", "#!/usr/bin/env python3",
|
|
"# lint as: python2, python3", "# lint as: python3"
|
|
]
|
|
for match in py3_strs:
|
|
if match in line:
|
|
return True
|
|
return False
|
|
|
|
|
|
def need_to_skip(fullname):
|
|
"""check if this file or folder that needs to be skipped from skip_strs.
|
|
|
|
Args:
|
|
fullname: Current file or folder name.
|
|
|
|
return:
|
|
Boolean True or False.
|
|
"""
|
|
skip_strs = ["__init__.py", "autotest_lib", "common.py", "site_tests"]
|
|
for match in skip_strs:
|
|
if match in fullname:
|
|
return True
|
|
return False
|
|
|
|
|
|
def list_files_to_txt(upper_dir, file, suffix, nums_line_to_check):
|
|
"""List results to .txt file by check all target files.
|
|
under the folder and subfolder.
|
|
|
|
Args:
|
|
upper_dir: The folder path need to check. The default.
|
|
is the ipper path of this script.
|
|
file: output .txt file. The default is Python2MigrationTarget.txt.
|
|
suffix: File extensions that need to be checked.
|
|
nums_line_to_check: The number of rows to check.
|
|
|
|
return:
|
|
All file names and paths that meet the standard.
|
|
"""
|
|
exts = suffix.split(" ")
|
|
files = os.listdir(upper_dir)
|
|
for filename in files:
|
|
fullname = os.path.join(upper_dir, filename)
|
|
if need_to_skip(fullname):
|
|
continue
|
|
if os.path.isdir(fullname):
|
|
list_files_to_txt(fullname, file, suffix, nums_line_to_check)
|
|
else:
|
|
for ext in exts:
|
|
if filename.endswith(ext):
|
|
filename = fullname
|
|
with open(filename, "r") as f:
|
|
for i in range(nums_line_to_check):
|
|
line = str(f.readline().strip()).lower()
|
|
if has_match(line):
|
|
tail = filename.split("third_party")[-1]
|
|
file.write("%s, 3\n" % tail)
|
|
else:
|
|
tail = filename.split("third_party")[-1]
|
|
file.write("%s, 2\n" % tail)
|
|
break
|
|
|
|
|
|
def main():
|
|
"""This is main function"""
|
|
upper_dir = os.path.abspath(
|
|
os.path.join(os.path.dirname("__file__"), os.path.pardir))
|
|
outfile = "Python2MigrationTarget.txt"
|
|
suffix = ".py"
|
|
nums_line_to_check = 20
|
|
file = open(outfile, "w")
|
|
if not file:
|
|
print("cannot open the file %s " % outfile)
|
|
list_files_to_txt(upper_dir, file, suffix, nums_line_to_check)
|
|
file.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|