小编Bla*_*ion的帖子

如何在 Python 2 和 Python 3 中处理 subprocess.Popen 输出

我有一个简单的函数来检查程序是否正在运行并根据需要返回一个布尔值。它通过ps -A使用模块检查命令的输出来做到这一点subprocess。我试图让这个函数在 Python 2 和 Python 3 中都能工作,但遇到以下错误:

TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

应如何函数变化,从而它可以工作Python 2和Python 3的?

import subprocess

def running(program):
    results = subprocess.Popen(
        ["ps", "-A"],
        stdout = subprocess.PIPE
    ).communicate()[0].split("\n")
    matches_current = [
        line for line in results if program in line and "defunct" not in line
    ]
    if matches_current:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

编辑:按照@Josh 的一些指导,我已将换行符字符串分隔符更改为字节码,但是我仍然遇到类似的问题:

>>> import subprocess
>>> def running(program):
...     results = subprocess.Popen(
...         ["ps", "-A"],
...         stdout …
Run Code Online (Sandbox Code Playgroud)

string unicode subprocess python-3.x

6
推荐指数
1
解决办法
2937
查看次数

在 pandas 中,是否有一些紧凑的方法来绘制一周中各天的数据?

我有一个简单的数据帧,其中记录了一组datetime设置为索引的值。是否有一些紧凑的方法来绘制一周中各天的数据?我的意思是如下所示,水平轴上是一周中的几天,不同周的数据以不同颜色绘制:

我当前的代码如下,但对于概念上简单的事情来说,它似乎很复杂:

df["weekday"]          = df["datetime"].dt.weekday
df["weekday_name"]     = df["datetime"].dt.weekday_name
df["time_through_day"] = df["datetime"].map(lambda x: x - datetime.datetime.combine(x.date(), datetime.time()))

def days_through_week(row):

    return row["weekday"] + row["time_through_day"] / (24 * np.timedelta64(1, "h"))

df["days_through_week"] = df.apply(lambda row: days_through_week(row), axis = 1)

datasets = []
dataset = []
previous_days_through_week = 0
for days_through_week, value in zip(df["days_through_week"], df["value"]):
    if abs(days_through_week - previous_days_through_week) < 5:
        dataset.append([days_through_week, value])
    else:
        datasets.append(dataset)
        dataset = []
    previous_days_through_week = days_through_week

for dataset in datasets:

    x = [datum[0] for datum in dataset]
    y …
Run Code Online (Sandbox Code Playgroud)

python datetime matplotlib weekday pandas

5
推荐指数
1
解决办法
6007
查看次数

应该如何在 npyscreen(Python Curses 包装器)中调整小部件的大小?

我希望 npyscreen 应用程序中某些小部件的高度随着终端大小的调整而调整。

具体来说,我希望在调整终端大小时,这两个列小部件继续占据终端高度的大约相同部分,而底部的行小部件在调整终端大小时保留在终端的底部。

我已经有一些东西可以工作,但是当终端调整大小时,整体渲染会出现问题,就像小部件不知道我希望它们在哪里绘制一样。可能出了什么问题?这应该如何正确完成?

import curses
import sys

import npyscreen
npyscreen.disableColor()

def main():
    app = App()
    app.run()

class App(npyscreen.NPSApp):
    def main(self):
        form = npyscreen.FormBaseNew(name = "COMMUNICATIONS")
        column_height = terminal_dimensions()[0] - 9
        widget_contacts = form.add(
            Column,
            name       = "CONTACTS",
            relx       = 2,
            rely       = 2,
            max_width  = 20,
            max_height = column_height
        )
        widget_messages = form.add(
            Column,
            name       = "MESSAGES",
            relx       = 23,
            rely       = 2,
            max_height = column_height
        )
        widget_input = form.add(
            npyscreen.BoxTitle,
            name       = "INPUT",
            max_height = 5
        ) …
Run Code Online (Sandbox Code Playgroud)

python curses npyscreen

5
推荐指数
0
解决办法
4093
查看次数

刷新笔记本浏览器窗口时,如何使 Jupyter 笔记本小部件保持不变?

Jupyter 小部件,如 HTML 进度条,会在笔记本浏览器窗口刷新时(或远程重新连接到笔记本时)消失。我正在尝试查看如何在刷新窗口时使它们持久化并重新呈现。

假设我为 Jupyter 设置了这样的小部件:

jupyter nbextension enable --py widgetsnbextension
Run Code Online (Sandbox Code Playgroud)

然后我启动一个这样的笔记本:

import time

import ipykernel
import ipywidgets
import IPython
import jupyter
import notebook
import tqdm
import tqdm.notebook
import widgetsnbextension

print('ipykernel version: ', ipykernel.__version__)
print('ipywidgets version: ', ipywidgets.__version__)
print('IPython version: ', IPython.__version__)
print('Jupyter version: ', jupyter.__version__)
print('Jupyter notebook version: ', notebook.__version__)
print('tqdm version: ', tqdm.__version__)
print('widgetsnbextension version: ', widgetsnbextension.__version__)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到的版本打印如下:

ipykernel version:  5.1.3
ipywidgets version:  7.5.1
IPython version:  7.9.0
Jupyter version:  1.0.0
Jupyter notebook version:  6.0.2
tqdm version:  4.40.0 …
Run Code Online (Sandbox Code Playgroud)

python widget jupyter ipywidgets tqdm

5
推荐指数
0
解决办法
610
查看次数

在Jupyter笔记本中,如何滚动到最后一个单元格?

这是一个简单的人体工程学问题。编辑器Geany中有一个选项可以使用户滚动显示的最后一行。例如,这允许用户在垂直方向的显示器上将最后一行代码提升到与视线相同的高度。

如何在Jupyter笔记本中执行类似的操作?我不希望我的头一直向下。如何滚动到最后一个单元格?

我希望结果在某种程度上可以与使用Chromium扩展“ 更多页面空间”相媲美。

ipython geany

4
推荐指数
1
解决办法
536
查看次数

如何设置熊猫散布矩阵的文本大小和旋转度?

我正在创建一个较大的散点矩阵,并希望更改文本,使其整齐,对齐,不重叠等。为此,我想探索减小字体大小并更改文本旋转(以及其他合理的方法) 。我该怎么办?

以下尝试不起作用:

scatter_matrix = pd.scatter_matrix(
    data,
    figsize  = [15, 15],
    marker   = ".",
    s        = 0.2,
    diagonal = "kde"
)
plt.xticks(fontsize = 2, rotation = -90)
plt.yticks(fontsize = 2)
plt.savefig("scatter_matrix.jpg", dpi = 700)
Run Code Online (Sandbox Code Playgroud)

python scatter matplotlib pandas

3
推荐指数
1
解决办法
3014
查看次数

何时在C++中使用"声明"?

这可能是一个愚蠢的问题,但鉴于其关键字,很难搜索.我今天看了一些C++代码,看到一些东西按照以下方式在函数顶部声明:

declare(some stuff);
Run Code Online (Sandbox Code Playgroud)

什么时候在C++中使用?

c++ declaration

2
推荐指数
1
解决办法
103
查看次数

尝试使用 DatetimeIndex 标准化 Pandas DataFrame 中的列时出现错误“unhashable type: 'Index'”

我有一个带有 DatetimeIndex 的 pandas DataFrame 和我想要标准化的列(重新缩放到 -1 和 1 之间)。当我尝试执行此操作时,遇到错误unhashable type: 'Index'。可能出了什么问题以及我该如何处理?

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

df[[df.columns]] = scaler.fit_transform(df[[df.columns]])
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

1
推荐指数
1
解决办法
2万
查看次数

我怎样才能让这个简单的 Flask 网站返回 robots.txt 工作?

我想要一个简单的小 Flask 网站,返回robots.txt. 这是我到目前为止所拥有的:

from flask import Flask
app = Flask(__name__)
app.run(host = "0.0.0.0", port = 80)

@app.route("/robots.txt")
def robots_dot_txt():
    return "User-agent: *\nDisallow: /"
Run Code Online (Sandbox Code Playgroud)

当我尝试访问它时,我收到 404:

213.152.161.130 - -[31/Mar/2018 21:35:01] "GET /robots.txt HTTP/1.1" 404 -
Run Code Online (Sandbox Code Playgroud)

flask

1
推荐指数
1
解决办法
1507
查看次数