代码示例
"""
参数文件:
URL and URLs are required parameters, but only one of them can be filled in.
satrt、end、re_str is an optional parameter.
start and end Is a pair and must be of type str, Play the role of cutting strings.
re_str Represents a regular expression, Extract the data you need.
"""
url = r"C:\Users\n\Desktop\桌面文件"
urls = None
start = None # "1"
end = None
re_str = ".+\..+"
"""
逻辑处理文件
"""
from get_files import constants
import os
import re
class Get_file(object):
def Get_file(self, url):
file_list = os.listdir(url)
return file_list
def Get_Sub_File(self, urls):
for root, dirs, files in os.walk(urls, topdown=False):
pass
file_list = dirs + files
return file_list
class Handle_Result(object):
def str_split(self, datas, start, end):
for data in datas:
try:
data = data[int(start), int(end)]
except Exception as e:
return "字符串切割参数有问题"
with open(r"./result.txt", "a") as f:
f.write(data + "\n")
def str_re(self, datas, re_str):
for data in datas:
try:
result_data = re.match(r"%s" % re_str, data)
except Exception as e:
return "正则表达式参数有问题"
if result_data is None:
continue
else:
result_data = result_data.group()
with open(r"./result.txt", "a") as f:
f.write(result_data + "\n")
def str_stand(self, datas):
for data in datas:
with open(r"./result.txt", "a") as f:
f.write(data + "\n")
class Run(Get_file, Handle_Result):
def __init__(self, url, urls, start, end, re_str):
self.url = url
self.urls = urls
self.start = start
self.end = end
self.re_str = re_str
def run(self):
# 1.判断路径参数
# 2.业务处理
if all([self.url, self.urls]):
return "url和urls只能填写一个,另一个则为None"
if self.url:
try:
datas = self.Get_file(self.url)
except Exception as e:
return "文件路径有问题"
if self.urls:
try:
datas = self.Get_Sub_File(self.urls)
except Exception as e:
return "文件路径有问题"
if self.start is None and self.end is None and self.re_str is None:
self.str_stand(datas)
if all([self.start, self.end]):
self.str_split(datas, self.start, self.end)
if self.re_str:
self.str_re(datas, self.re_str)
if __name__ == "__main__":
Start = Run(constants.url, constants.urls, constants.start, constants.end, constants.re_str)
Start.run()