Как я могу получить значение ключа реестра из сценария пакетной обработки?

Matplotlib представляет даты как числа с плавающей запятой (в днях), поэтому, если вы (или панды или морские) не говорите, что ваши значения представляют даты, они не будут отформатировать тики в качестве дат. Я не эксперт по морскому дну, но похоже, что он (или панды) преобразует объекты datetime в даты matplotlib, но затем не назначает правильные локаторы и форматирующие элементы для осей. Вот почему вы получаете эти странные числа , которые на самом деле являются только днями с 0001.01.01.

Таким образом, вам придется назначить локатор даты , который решает, где поставить тики, и форматировщик даты , который затем отформатирует строки для меток тика.

import datetime
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# build up the data
df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
    for j in [1,2]:
        unit = 'Ones' if j == 1 else 'Twos'
        date = start_date + datetime.timedelta(days=i)

        # I believe it makes more sense to directly convert the datetime to a
        # "matplotlib"-date (float), instead of creating strings and then let
        # pandas parse the string again
        df.append({
                'Date': mdates.date2num(date),
                'Value': i * j,
                'Unit': unit
            })
df = pd.DataFrame(df)

# build the figure
fig, ax = plt.subplots()
sns.tsplot(df, time='Date', value='Value', unit='Unit', ax=ax)

# assign locator and formatter for the xaxis ticks.
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y.%m.%d'))

# put the labels at 45deg since they tend to be too long
fig.autofmt_xdate()
plt.show()

Результат:

enter image description here [/g3]

57
задан 3 revs, 2 users 100%Fabius 15 January 2009 в 13:46
поделиться

2 ответа

Это работает на меня:

@echo OFF

setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\Microsoft\Command Processor"
set VALUE_NAME=DefaultColor

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
    set ValueName=%%A
    set ValueType=%%B
    set ValueValue=%%C
)

if defined ValueName (
    @echo Value Name = %ValueName%
    @echo Value Type = %ValueType%
    @echo Value Value = %ValueValue%
) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)

usebackq необходим начиная с команды к REG QUERY двойные кавычки использования.

skip=4 игнорирует весь вывод за исключением строки, которая имеет имя значения, введите и оцените, если это существует.

2^>nul препятствует тому, чтобы текст ошибки появился. ^ символ ESC, который позволяет Вам поместить > в эти for команда.

, Когда я выполняю сценарий выше, как дали, я получаю этот вывод:

Value Name = DefaultColor
Value Type = REG_DWORD
Value Value = 0x0

, Если я изменяю значение [1 110] к [1 111] тогда, я получаю это:

"HKEY_CURRENT_USER\Software\Microsoft\Command Processor"\BogusValue not found.
58
ответ дан Patrick Cuff 7 November 2019 в 15:58
поделиться

Спасибо, я просто должен использовать:

SETLOCAL EnableExtensions

И помещенный a:

2^>nul

В QUERY REG, названную в команде FOR. Большое спасибо снова!:)

0
ответ дан Fabius 7 November 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: