我最近在天文台的一台重要机器上从Windows XP升级到Windows 10(我早就应该这么做了,我知道......).我注意到在Windows 10中,如果我在Windows命令行(cmd.exe)上运行脚本,我现在可以通过单击终端窗口来中断脚本的运行.
当我点击终端时,标题栏会发生变化,并且标题前面会出现"select"字样.我现在已经多次意外地做了这件事(当重新组织打开的终端时)并且由于一个重要的运行脚本被中断而导致了一连串的错误,并且依赖它的一些事情已经下降了.
通过点击终端中的返回可以取消选择"选择"模式,然后中断的代码继续像以前一样运行.
我想尽可能禁用此功能.有没有遇到过这个?谢谢
我最近使用下面的示例 docker-compose.yml 文件在 Windows 10 的各个项目中成功安装了卷。对于今天的一个新项目,我需要从 Z:/ 驱动器(一个网络安装驱动器,当\\IP.IP.IP.IP\public\data (Z:)
我导航到 Windows 文件资源管理器中的该区域时出现)安装一个文件夹。
当我编辑卷以指向 Z: 上的位置时(例如在下面的第二个 docker-compose.yml 中),当我通过 CLI 连接到容器时,卷未正确安装并且是空文件夹。
任何关于正确安装 Z: 驱动器文件夹的建议都会很棒,谢谢。
工作 docker-compose.yml 文件:
version: '3.1'
services:
db:
image: mysql:8.0.25
container_name: db
restart: always
secrets:
- mysql_root
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
MYSQL_DATABASE: donuts
TZ: "Australia/NSW"
volumes:
- mysql-data:/var/lib/mysql
- ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
network_mode: "host"
voyager_donuts:
container_name: voyager_donuts
build:
context: .
dockerfile: Dockerfile
image: voyager_donuts
network_mode: "host"
environment:
TZ: "Australia/NSW"
volumes:
- c:/Users/MYUSERNAME/data/DonutsCalibration:/voyager_calibration
- c:/Users/MYUSERNAME/data/DonutsLog:/voyager_log
- c:/Users/MYUSERNAME/data:/voyager_data
- c:/Users/MYUSERNAME/data/DonutsReference:/voyager_reference
volumes:
mysql-data:
secrets: …
Run Code Online (Sandbox Code Playgroud) 我有一个图像数组,其 X 乘以 Y 形状为 2048x2088。x 轴有两个 20 像素的区域,一个在开始,一个在结束,用于校准主图像区域。要访问这些区域,我可以像这样对数组进行切片:
prescan_area = img[:, :20]
data_area = img[:, 20:2068]
overscan_area = img[:, 2068:]
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在配置文件中定义这些区域,以便将此切片推广到其他可能具有不同预扫描和过扫描区域并因此需要不同切片的相机。
理想情况下,类似下面的字符串将允许在相机特定的配置文件中进行简单的表示,但我不确定如何将这些字符串转换为数组切片。
prescan_area_def = "[:, :20]"
image_area_def = "[:, 20:2068]"
overscan_area_def = "[:, 2068:]"
Run Code Online (Sandbox Code Playgroud)
也许我缺少一些明显的东西?
谢谢!
我想使用日志记录模块在 Python 中的每次循环迭代中生成一个新的日志文件。我正在 for 循环中分析数据,其中循环的每次迭代都包含有关新对象的信息。我想为每个对象生成一个日志文件。
我查看了日志记录模块的文档,可以按时间间隔或在日志文件填满时更改日志文件,但我看不到如何以新名称迭代生成新日志文件。我提前知道循环中有多少对象。
我想象的伪代码是:
import logging
for target in targets:
logfile_name = f"{target}.log"
logging.basicConfig(format='%(asctime)s - %(levelname)s : %(message)s',
datefmt='%Y-%m/%dT%H:%M:%S',
filename=logfile_name,
level=logging.DEBUG)
# analyse target infomation
logging.info('log target info...')
Run Code Online (Sandbox Code Playgroud)
但是,日志信息始终附加到目标 1 的第一个日志文件中。
有没有办法在每个循环开始时强制一个新的日志文件?
这可能是一个愚蠢的问题,但我在 pymysql 的文档中找不到信息。pymysql 默认游标类是什么?当我在连接到数据库时未指定游标类时,我的查询会为响应中的每一行返回一个列表。
当我指定 pymysql.cursors.DictCursor 时,我得到字典响应。我希望能够在脚本中的不同连接之间进行更改。
我已经用上下文管理器编写了一个小函数来生成光标,但它要求我每次都指定光标类的名称。我知道我可以解决这个问题,但知道默认光标类的名称会很好。
from contextlib import contextmanager
import pymysql
@contextmanager
def openDb(host=DB_HOST, database=DB_DATABASE,
user=DB_USER, cursor=DB_CURSOR):
"""
Simple context manager for opening a db connection
"""
with pymysql.connect(host=host, database=database, user=user,
cursorclass=cursor) as cur:
yield cur
Run Code Online (Sandbox Code Playgroud)
我可能可以这样写:
@contextmanager
def openDb(host=DB_HOST, database=DB_DATABASE,
user=DB_USER, cursor=None):
"""
Simple context manager for opening a db connection
"""
if cursor:
with pymysql.connect(host=host, database=database, user=user,
cursorclass=cursor) as cur:
yield cur
else:
with pymysql.connect(host=host, database=database, user=user) as cur:
yield cur
Run Code Online (Sandbox Code Playgroud)
并让它默认为默认的光标类,但我更愿意明确。