import job文件夹模块
当一个文件夹下有很多文件时,可以在文件夹下增加init.py文件。 然后该文件夹包括的所有文件就是 一个包,
当一个文件夹下有 init .py时,意为该文件夹是一个包(package)
需要在job文件夹下面增加__init__.py文件,表示这个文件夹本身就是一个包。
all 是一个重要的变量,用来指定此包(package)被import *时,哪些模块(module)会被import进
可以重写 all ,如 all = [‘当前所属包模块1名字’, ‘模块1名字’],如果写了这个,则会按列表中的模块名进行导入。
demo
main.py中。
from job import jobs_all
job文件夹中
logger = logging.getLogger('jobs')
from config import config
from .bean import Bean
from .bean_app import BeanApp
from .sign_jr import SignJR
from .daka_app import DakaApp
from .double_sign import DoubleSign
from .data_station import DataStation
from .double_sign_V2 import DoubleSignV2
from .double_sign_V1 import DoubleSignV1
__all__ = ['jobs_all', 'logger']
jobs_mobile = [DakaApp, BeanApp, DataStation]
jobs_web = [Bean, SignJR]
jobs_all = jobs_mobile + jobs_web + [DoubleSign]
ModuleNotFoundError
ModuleNotFoundError: No module named '__main__.common'; '__main__' is not a package
引用的目录问题,如果是测试 的话,把两个文件放在一个目录下。
同时删除__init__.py 然后删除common前面的. 就可以了。
“/”:表示根目录
“./”:表示当前目录 /可以省写成.
“../”:表示上级目录
正则
s是指空白,包括空格、换行、tab缩进等所有的空白,
S刚好相反 这样一正一反下来,就表示所有的字符,完全的,一字不漏的
d:用于匹配从0到9的数字;
w:用于匹配字母,数字或下划线字符;
W: 与w相反。
re.search()方法扫描整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None
re.search(pattern, string, flags=0)
pattern : 正则中的模式字符串。
string : 要被查找替换的原始字符串。
flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
Python的string前面加上‘r’
在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不会被自动转义
Python 的If..elf..else:
if '0000' == find_value(sign_pattern, r.text):
sign_days = int(find_value(days_pattern, r.text))
self.logger.info('打开成功,获得钢镚数: {}'.format(sign_days))
elif '0015' == find_value(sign_pattern, r.text):
self.logger.info('今天钢镚已经打卡了')
else:
self.logger.info('钢镚打卡异常')
还不快抢沙发