我有这个设置:
main.py
/module
/module/__init__.py (empty)
/module.py
Run Code Online (Sandbox Code Playgroud)
这里是我的两个文件的代码,main.py并module.py分别为:
主文件
import logging
from module import module
logger = logging.getLogger(__name__)
def test():
logger.warning('in main.py/test')
def main():
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(name)s/%(module)s [%(levelname)s]: %(message)s', '%Y-%m-%d %H:%M:%S')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.warning('in main.py/main')
module.something()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
模块.py
import logging
logger = logging.getLogger(__name__)
def something():
logger.warning('in module.py/something')
Run Code Online (Sandbox Code Playgroud)
所以,我注意到这会输出以下内容(注意模块记录器没有格式):
2019-10-01 09:03:40 __main__/main [WARNING]: in main.py/main
in module.py/something
Run Code Online (Sandbox Code Playgroud)
它只是看起来像后,才进行编辑在main.py以变化logger = logging.getLogger( __ name __ )来logger …
我有以下 Python 代码:
strRunOutput = subprocess.run([strFastbootExecutable, "-s", dsn.upper(), "reboot"], timeout=5, stderr=subprocess.PIPE).stderr.decode('utf-8').upper()
Run Code Online (Sandbox Code Playgroud)
这基本上是这样做的:
fastboot -s G070GV1871970FCW reboot
Run Code Online (Sandbox Code Playgroud)
这是输出:
< waiting for G070GV1871970FCW >
Run Code Online (Sandbox Code Playgroud)
...这是挂。为什么 fastboot 命令挂起,我不知道,但更让我烦恼的是 subprocess.run 命令在我告诉它的 5 秒后没有超时,并导致我的程序挂起。任何想法发生了什么?
谢谢!
我一直认为pip适用于Python 2,而pip3适用于Python3。要安装不同版本的pip,我需要执行以下操作:
sudo apt-get install python-pip
sudo apt-get install python3-pip
Run Code Online (Sandbox Code Playgroud)
然后我得到了预期的结果:
$ pip --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)
但是,这些是旧版本,因此我执行以下操作:
$ sudo pip install pip --upgrade
Run Code Online (Sandbox Code Playgroud)
我得到这个:
$ pip --version
pip 19.0.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)
当我为某些软件包安装pip3时,出现以下消息:
You are using pip version 8.1.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Run Code Online (Sandbox Code Playgroud)
好吧,我已经运行过了,所以我尝试一下:
$ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 dictConfig 设置三个不同的记录器,由于某种原因,最后一个记录器似乎总是覆盖之前创建的两个记录器的配置。这是我正在使用的代码:
import logging
import logging.config
def setup_logger(name, level, ContentFormat='%(asctime)s %(levelname)s %(message)s', DateTimeFormat='%Y-%m-%d %H:%M:%S'):
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'default': {'format': ContentFormat, 'datefmt': DateTimeFormat},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': level,
'formatter': 'default',
'stream': 'ext://sys.stdout'
}
},
'loggers': {
'a': {
'level': level,
'handlers': ['console']
},
'b': {
'level': level,
'handlers': ['console']
},
'c': {
'level': level,
'handlers': ['console']
}
}
})
return logging.getLogger(name)
logger_a = setup_logger(name='a', level=logging.INFO, ContentFormat='A: %(message)s')
logger_b = setup_logger(name='b', level=logging.INFO, ContentFormat='B: …Run Code Online (Sandbox Code Playgroud)