小编run*_*ace的帖子

Python子进程,实时打印颜色并保存标准输出

在保存结果的同时打印子进程的输出并不是一个新问题,并且之前已经多次回答过,例如: https: //stackoverflow.com/a/28319191/5506400 这对我不起作用,因为我正在尝试维护打印外壳颜色。例如,当一个人走时systemctl status application,它的打印会显示为绿色。上述方法都依赖于从子进程中一行一行地读取,但在我看来,那时颜色信息已被剥离和丢失。

我尝试创建一个对象,该对象远离标准输出打印并将它们保存到变量中:

from subprocess import *
import sys

class Tee():
    def __init__(self):
        self.content = ''
        self.stdout = sys.stdout
        sys.stdout = self
    def __enter__(self):
        return self
    def __exit__(self, *args):
        pass
    def __del__(self):
        sys.stdout = self.stdout
    def write(self, data):
        self.content += data
        self.stdout.write(data)
    def flush(self):
        self.content = ''

with Tee() as tee:
    # Saves print to tee.content
    print("Hello World")

    # This line does not save prints to tee.content    
    run(['apt-get', 'update'])

    # raises an error that …
Run Code Online (Sandbox Code Playgroud)

python subprocess python-3.x systemd

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

Django,如何在自定义表单中使用管理自动完成字段

在 Django 管理界面中,您可以将字段设置为自动完成字段,例如:

autocomplete_fields = ('countries', )
Run Code Online (Sandbox Code Playgroud)

这对管理页面很有用,如何在自定义视图/表单中使用自动完成字段?我的研究指向 django-autocomplete-light,但是当 Django 已经具有内置功能时,安装 3rd 方包似乎并不理想。

django

9
推荐指数
2
解决办法
3138
查看次数

从 CLI 启动窗口的终端并传入可执行命令以运行

我可以用wt. 我已经阅读了有关命令行参数的 Windows 终端文档,它只涵盖了为设置终端窗格传递参数,而不是传递实际的可执行命令。

例如最小可重现示例:需要安装 Windows 终端:在 Windows 中打开 cmd 提示符并键入:

dir | wt
Run Code Online (Sandbox Code Playgroud)

这将启动 Windows 终端,但它没有收到dir命令。如何将可执行命令传递给 Windows 终端?

powershell batch-file windows-terminal

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

HTML 标签或类似 <wbr> 的技术但用于换行?

我经常发现我希望控制句子的断开/换行方式,例如:

Hello there Mr Nemesis X, welcome to the interwebs!
Run Code Online (Sandbox Code Playgroud)

如果视口很窄,我希望它在逗号之后换行,因此两条逻辑行在一起:

GOOD:仅当视口太窄而无法显示整个屏幕时

Hello there Mr Nemesis X,                |<----- viewport width
welcome to the interwebs!
Run Code Online (Sandbox Code Playgroud)

坏的

Hello there Mr Nemesis X, welcome to the |<----- viewport width
interwebs!
Run Code Online (Sandbox Code Playgroud)

目前,我将这两个句子放在两个<span>s 中,并使用 flex 来确保它们包装在一起,这对我经常做的事情来说是一个多么大的使命。我了解了<wbr>,听起来如果我用 say 替换所有空格就可以工作&nbsp;,但这不是它的定义目的。有<br>,但总是会中断。所以我正在寻找类似“换行符”的东西,比如说<lbr>(不存在),如果该行需要换行,它会说嘿,这是一个换行的好地方。

html

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

CSS 网格,空行仍然会增加间隙

我有一个 CSS grid,有时并非所有元素都被使用。在实际用例中,我使用的是grid输入小部件,其中可能有额外的帮助文本或错误放入特定的grid-area. 我遇到的问题是grid-gap,如果该行为空,它仍然应用间隙。这会导致底部出现双行间隙。有没有办法禁止显示空行之间的间隙?

我一直面临这个问题,它使得网格间隙对我来说无法使用,所以通常我不使用网格间隙,而是使用更复杂的边距设置。

.parent {
  background: gray;
  padding: 16px;
  margin: 16px;
  display: grid;
  grid-template-columns: 64px 128px;
  grid-template-areas:
"childa childb"
"childc childd"
"childe childf";
  grid-gap: 16px;
}

[class^="child"] {
  background-color: red;   
}

.childa { grid-area: childa }
.childb { grid-area: childb }
.childc { grid-area: childc }
.childd { grid-area: childd }
.childe { grid-area: childe }
.childf { grid-area: childf }
Run Code Online (Sandbox Code Playgroud)
<p>Grid gap is okay if all cells filled:</p>
<div class="parent"> …
Run Code Online (Sandbox Code Playgroud)

css css-grid

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

Web 组件:如何查询插槽的子级

假设我有一个本机 Web 组件,它有一个插槽:

    <slot id="CONTENT_SLOT" name="content"></slot>
Run Code Online (Sandbox Code Playgroud)

const CONTENT_SLOT = this.shadowRoot.getElementById("CONTENT_SLOT")找到该元素,但CONTENT_SLOT.children为空。

this.shadowRoot.querySelectorAll('[slot="content"]')也返回一个空节点列表。

document.querySelectorAll('[slot="content"]')查找插槽中的项目,但适用于所有 Web 组件。

如何content仅获取当前 Web 组件实例的槽中元素的 NodeList?

web-component

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

CSS:flex-wrap 创建一个大空间,该空间随着添加到其中网格的元素数量而增长

在下面的示例中,有一个很大的红色间隙,我认为不应该存在,这里称为“间隙”。它出现在 Firefox 和 Chrome 中。所以我想纠正一下我对flex/grid容器的理解。

奇怪的是,这个空间的增长取决于放置的物品数量#CONTAINER。如果您将其中的项目数量减半,例如 4(111 到 444),那么空间将减半,如果您向其中添加项目,空间将会增加。

我只是不明白这个差距从何而来,为什么差距会越来越大又越来越小。我通过反复试验确定它会在flex-wrap: wrap应用时发生。#CARD所以这篇文章不是关于“修复下面的代码,使其以某种方式运行”。这是关于了解空间从哪里来?为什么添加物品#CONTAINER后空间会变大?

注意:我需要flex-wrap: wrap在我的真实代码中,这只是一个最小的可重现示例。

#CARD {
  background: lightgray;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  padding: 8px;
}

#SECTION {
  background: red;
  display: flex;
  flex-direction: column;
}

#CONTAINER {
  background: green;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 268px), 1fr));
}
Run Code Online (Sandbox Code Playgroud)
<div id="CARD"><!-- gray -->
  <div id="SECTION"><!-- red -->
    <div id="CONTAINER"><!-- green -->
      <div>
        <div>111</div>
        <div>222</div>
      </div>
      <div>
        <div>333</div>
        <div>444</div>
      </div>
      <div>
        <div>555</div>
        <div>666</div> …
Run Code Online (Sandbox Code Playgroud)

css

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

Python Django - “AUTH_USER_MODEL 指的是尚未安装的模型 '%s'” % settings.AUTH_USER_MODEL

如果我的代码中有任何错误(在使用 LoginRequiredMixin 的视图中使用的模型中的代码),例如一个错误,例如:

if (True:    # <-- example bug to show how bugs like this are hidden
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

"AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
django.core.exceptions.ImproperlyConfigured: 
AUTH_USER_MODEL refers to model 'auth.User' that has not been installed
Run Code Online (Sandbox Code Playgroud)

这使得调试代码非常困难。我已经弄清楚是否从我的 views.py 中删除了这一行:

from django.contrib.auth.mixins import LoginRequiredMixin
Run Code Online (Sandbox Code Playgroud)

即使我删除了所有使用 LoginRequiredMixin 的实例,只需导入它,它就会隐藏真正的错误并生成上述身份验证错误。

我读过:AUTH_USER_MODEL 指的是尚未安装的模型“%s””% settings.AUTH_USER_MODEL

我的研究表明,大多数情况下这是由于 INSTALLED_APPS 中缺少“django.contrib.auth'”,您可以看到我有(settings.py 片段,Django 2.2):

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth', # <-- Important for this topic!
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp.apps.CommonConfig',
]

MIDDLEWARE = [ …
Run Code Online (Sandbox Code Playgroud)

python django mixins

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

启用双击资源管理器中的文件并在 Windows 终端中使用 WSL 应用程序(Neovim、Vim 等)启动/运行它的脚本

我使用 WSL(适用于 Linux 的 Windows 子系统)。我在 WSL 中安装了 Neovim/Vim/etc,并希望能够在资源管理器中打开一个文件,并在 Windows 终端内在 WSL 中安装的 Neovim 中打开它。编写什么脚本来启动它,我正在努力从cmd, 通过 wt.exe转义双引号,然后转入 WSL bash。

为 windows 和 linux 配置两个版本的 Neovim/Vim 可能会很痛苦。而只是在 Windows 和 WSL 中仅使用 WSL 版本。

windows vim batch-file neovim windows-subsystem-for-linux

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

仅在 chrome 中重新启动时出现 Service Worker 错误:无法意外加载脚本

问题

\n
    \n
  • 在 Firefox 上,可以安装以下 Service Worker,并且可以正常停止和启动。
  • \n
  • 在 Chrome 上,下面的测试服务工作人员安装罚款,工作完美,直到关闭并打开浏览器,或者在软件开发工具中单击“停止”,然后单击“开始”。
  • \n
\n

介绍

\n

我创建了一个服务工作人员,在本地使用 chrome 对其进行了调试,并且工作正常。我将其部署到网站上,并看到下图中的错误(仅在 Chrome 中,Firefox 工作正常):

\n
/static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly\n/static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly\n
Run Code Online (Sandbox Code Playgroud)\n

使用 Chrome,如果我单击启动服务工作线程,它会立即停止。对于 Firefox,它会运行一段时间然后停止(预期)。

\n

环境

\n
    \n
  • 操作系统:Ubuntu 20.04,Windows 10
  • \n
  • 浏览器\n
      \n
    • Chrome:版本 97.0.4692.99(官方版本)(64 位)
    • \n
    • 也出现在 Chromium 92.0.451598 上
    • \n
    \n
  • \n
  • Chrome 上不处于离线模式NetworkApplication
  • \n
  • 我唯一的线索是软件第一次安装时,它工作正常。但是,如果我关闭浏览器并重新打开它,我会看到这些错误并且软件会停止。听起来像是一个全局状态问题,即当工作程序再次启动时变量/对象不存在,但是我没有任何全局状态,正如您所看到的,只有几个函数。
  • \n
  • 没有扩展,全部禁用
  • \n
  • 在两台不同的电脑上尝试过,
  • \n
  • 下面的 sw.min.js 没有缩小,而是以未缩小的形式粘贴的。
  • \n
\n

在此输入图像描述

\n

我已经将我的服务人员简化为这样,所以现在我很确定这不是我的代码,而是 …

javascript google-chrome google-chrome-devtools service-worker progressive-web-apps

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