小编Bas*_*asj的帖子

在带有 SP1 的 Windows 7 32 位上安装 Python 3.8

我无法在 Windows 7 32 位上安装 Python 3.8,并出现 SP1 错误日志detected windows 7 sp1 without kb2533625,我整天都在搜索此更新,但没有找到任何帮助?

python windows windows-7 python-3.8

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

如何用Python对向量场进行插值?

我有一个 2D 矢量场(实际上它是 3D,但如果我们知道如何用 2D 实现它,我认为它会很容易推广到 3D),如下所示:

import matplotlib.pyplot as plt, numpy as np
x = [0, 0, 1, 1, 2, 2, 0, 1, 2]
y = [1, 2, 1, 2, 1, 2, 1.5, 1.5, 1.5]
u = [0.5, -1, 0, 0, 0.25, 1, 0, 0, 0.75]
v = [1, 1, 1, 1, 1, 1, 1, 1, 1]
plt.quiver(x, y, u, v)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何平滑地插值这个向量场?

我知道如何使用np.polyfit,但我不知道如何对向量场进行插值。

示例:我想插入[0,2]x[1,2]数百个箭头。

python interpolation numpy vector

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

使用Python就地重写文件

它可能取决于每个操作系统,并且还取决于硬件,但是Python中有一种方法可以要求对文件的写操作“就地”发生,即原始文件的同一位置发生,即如果可能的话磁盘上的相同扇区?

例如:假设sensitivedata.raw必须加密4KB文件:

with open('sensitivedata.raw', 'r+') as f:  # read write mode
    s = f.read()
    cipher = encryption_function(s)  # same exact length as input s
    f.seek(0)
    f.write(cipher)  # how to ask this write operation to overwrite the original bytes?
Run Code Online (Sandbox Code Playgroud)

示例2:将文件替换为相同大小的空字节内容,以避免使用未删除的工具恢复该文件(当然,要正确执行此操作,我们需要多次传递,不仅随机数据而且还包含空字节,但这里只是一个想法)

with open('sensitivedata.raw', 'r+') as f:
    s = f.read()
    f.seek(0)
    f.write(len(s) * '\x00')  # totally inefficient but just to get the idea
os.remove('sensitivedata.raw')
Run Code Online (Sandbox Code Playgroud)

PS:如果这确实取决于操作系统,那么我主要对Windows机箱感兴趣


侧quesion:如果它在SSD的情况下是不可能的,这是否意味着,如果你曾经在你的生活中写道敏感数据以明文形式在SSD(例如:明文密码,加密私钥,或其他任何东西,等),那么有没有办法确保该数据确实被擦除了?即唯一的解决方案是100%擦除磁盘并用随机字节填充很多遍?那是对的吗?

python io file python-3.x

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

使用 Kivy+Buildozer 构建 Android 应用

我有 Python 3.7 和 Windows 7 x64,我做了:

pip install kivy buildozer
Run Code Online (Sandbox Code Playgroud)

它有效,我可以在我的 Windows 计算机上成功运行 hello world 示例:

from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
    def build(self):
        return Button(text='hello world')
if __name__ == '__main__':
    TestApp().run()
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个 buildozer 文件:

buildozer init
Run Code Online (Sandbox Code Playgroud)

并修改 .spec 文件以使用正确的main.py.

但是之后:

buildozer android debug
Run Code Online (Sandbox Code Playgroud)

失败:

未知命令/目标 android

如何在 Windows 上使用 Kivy + Buildozer 编译 APK?

python android kivy buildozer

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

每天 8:00、12:30、17:00 运行 Gmail Google Apps 脚本

我需要每天运行 Google Apps 脚本三次:8:00、12:30、17:00。

这该怎么做?

我已经看过了Triggers,更具体地说Time driven

  • 小时计时器,但是Every hourEvery 2 hoursEvery 4 hours未在此处进行调整

  • 日定时器,但8am to 9am不是很精确,我更喜欢更精确的东西,而且 12:30 也是不可能的

  • 特定时间,但随后YYYY-MM-DD HH:MM不适合每天运行

From calendar 触发器似乎也没有适应。

javascript triggers google-apps google-apps-script gs-installable-triggers

3
推荐指数
2
解决办法
1290
查看次数

使用 cython --embed 时静态链接 python37.dll 和 vcruntime140.dll

假设我正在“cythonizing”这个test.py

import json
print(json.dumps({'key': 'hello world'}))
Run Code Online (Sandbox Code Playgroud)

和:

cython test.py --embed
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
cl test.c /I C:\Python37\include /link C:\Python37\libs\python37.lib
Run Code Online (Sandbox Code Playgroud)

正如分发嵌入 Cython 编译的代码并使其在任何机器上工作所需的最小文件集中提到的,有必要沿着文件分发python37.dllvcruntime140.dll的内容Lib\(作为Lib\或打包到 a 中python37.ziptest.exe

问题:如何修改cl.exe ...命令来要求编译器静态链接python37.dll到文件vcruntime140.dll内部test.exe

(这样就不再需要运输python37.dll和单独)vcruntime140.dll

python dll cython visual-c++ cl

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

使用 WASAPI 录制音频流

我正在阅读诸如“捕获流”“环回录音”之类的文档,但我找不到关于如何从环回音频设备(有时称为“什么使用 Windows WASAPI 聆听”、“立体声混音”)。

您是否有一个简单的可重现示例,展示如何使用 C++ 从 WASAPI 设备循环录制音频块?

这是 Python 中的一个类似(有效)示例:

import soundcard as sc  # installed with: pip install soundcard
lb = sc.all_microphones(include_loopback=True)[0]
with lb.recorder(samplerate=44100) as mic:
    while True:
        data = mic.record(numframes=None)
        print(data)    # chunks of audio data (448 samples x 2 channels as an array by default)
Run Code Online (Sandbox Code Playgroud)

c++ windows audio winapi wasapi

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

使用 SFTP 上传许多小文件速度缓慢

当用SFTP上传100个每个100字节的文件时,这里需要17秒(建立连接,我什至没有计算初始连接时间)。这意味着仅传输 10 KB 就需要 17 秒,即 0.59 KB/秒!

我知道向openwriteclose等发送 SSH 命令可能会产生很大的开销,但是,在使用 SFTP 发送许多小文件时,有没有办法加快该过程?

或者特殊模式paramiko或者/pysftp将所有要执行的写入操作保留在内存缓冲区中(假设最后 2 秒的所有操作),然后在 SSH/SFTP 的一次分组传递中执行所有操作?这将避免每次操作之间等待 ping 时间。

笔记:

  • 我的连接上传速度约为 100 KB/s(测试为 0.8 Mbit 上传速度),到服务器的 ping 时间为 40 毫秒
  • 当然,如果我不是发送 100 个 100 字节的文件,而是发送 1 个 10 KB 字节的文件,则需要 < 1 秒
  • 我不想在远程运行二进制程序,只接受 SFTP 命令
import pysftp, time, os
with pysftp.Connection('1.2.3.4', username='root', password='') as sftp:
    with sftp.cd('/tmp/'):
        t0 = time.time()
        for i in range(100):
            print(i) …
Run Code Online (Sandbox Code Playgroud)

python ssh sftp paramiko pysftp

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

Python 中的(命名)元组字典和速度/RAM 性能

我正在创建一个d包含一百万个元组项目的字典,理想情况下我想通过以下方式访问它们:

d[1634].id       # or  d[1634]['id']
d[1634].name     # or  d[1634]['name']
d[1634].isvalid  # or  d[1634]['isvalid']
Run Code Online (Sandbox Code Playgroud)

而不是d[1634][0], d[1634][1]d[1634][2]后者不太明确。

根据我的测试:

import os, psutil, time, collections, typing
Tri = collections.namedtuple('Tri', 'id,name,isvalid')
Tri2 = typing.NamedTuple("Tri2", [('id', int), ('name', str), ('isvalid', bool)])
t0 = time.time()
# uncomment only one of these 4 next lines:
d = {i: (i+1, 'hello', True) for i in range(1000000)}                                 # tuple
# d = {i: {'id': i+1, 'name': 'hello', 'isvalid': True} for i in range(1000000)} …
Run Code Online (Sandbox Code Playgroud)

python dictionary tuples namedtuple

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

避免不自然的断字

我有一个<h1>长单词的标题,如下所示。浏览器宽度当然取决于设备,但我注意到在我的一台设备上,它看起来像这样:

在此处输入图片说明

这不是一个很好的断词。

如何要求浏览器做“更好”的中断?

示例:Internationali-sation 或 -tion 或 -on 但不是n单独出现在下一行。

这是重现问题的方法(我在260px这里硬编码只是为了重现我在我的设备上看到的内容,但这并不是我的代码中真正硬编码的):

.a { width: 260px; background-color: yellow; }
h1 { word-wrap: break-word; }
Run Code Online (Sandbox Code Playgroud)
<div class="a">
<h1>Internationalisation</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

html css word-break

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