x是一个numpy.float32数组,使用来自值-200到0.这些是dB(分贝)值.
当我这样做时(按照此处的建议):
Image.fromarray(x, mode='F')
Run Code Online (Sandbox Code Playgroud)
我得到一个灰度或有时几乎是黑色的图像.
如何将[-200,0]中的float映射到24位RGB字节数组(使用色彩映射),可以使用Python模块PIL读取Image.fromarray(x, mode='RGB')?
这是一些要测试的代码:
import scipy, numpy as np
import scipy.io.wavfile as wavfile
import numpy as np
from PIL import Image
def stft(x, fftsize=1024, overlap=4):
hop = fftsize / overlap
w = scipy.hanning(fftsize+1)[:-1]
return np.array([np.fft.rfft(w*x[i:i+fftsize]) for i in range(0, len(x)-fftsize, hop)])
def dB(ratio):
return 20 * np.log10(ratio+1e-10)
def magnitudedB(frame, fftsize=1024):
w = scipy.hanning(fftsize+1)[:-1]
ref = np.sum(w) / 2
return …Run Code Online (Sandbox Code Playgroud) 背景:某些Windows命令行程序允许*.*在第一个参数中使用:
myprogram *.*
Run Code Online (Sandbox Code Playgroud)
并将自动循环目录的所有文件.
其他一些则没有,因此需要批处理循环:
for %%c in ("*.*") do myprogram "%%c"
Run Code Online (Sandbox Code Playgroud)
问题:是否有标准方式(在C语言中定义或OS提供?)允许*.*或*.txt在参数中,以便它自动对相关文件进行处理?
int main(int argc, char *argv[])
{
FILE *kf;
"for fname in argv[1]" // pseudo code here meaning:
// let's loop on all files described by the first argument
{
kf = fopen(fname, "rb");
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想检查一个解决方案是否存在,然后滚动我自己(重新发明通配符扩展的轮子,使用FindFirstFile等)
python myscript.py从Windows控制台cmd.exe(即Sublime Text 之外)运行此代码时,它的工作原理如下:
# coding: utf8
import json
d = json.loads("""{"mykey": {"readme": "Café"}}""")
print d['mykey']['readme']
Run Code Online (Sandbox Code Playgroud)
咖啡店
在Sublime Text 2中运行时CTRL+B,它会失败:
这样(默认情况下):
print d ['mykey'] ['readme']
UnicodeEncodeError:'ascii'编解码器无法对位置3中的字符u'\ xe9'进行编码:序数不在范围内(128)
[以0.1秒结束,退出代码为1]
或者像这样,在使用Sublime Text 3(即在构建系统中添加)在Python 3中打印UTF-8的答案应用解决方案之后:cmd.exe
[解码错误 - 输出不是utf-8]
[解码错误 - 输出不是utf-8]
[以0.1秒完成]
添加"env": {"PYTHONIOENCODING": "utf8"},Python Sublime-build文件也无济于事
如何"encoding": "utf-8"正确使用Sublime Text 2(适用于Windows)控制台,如果它包含一些UTF8字符?
注意:这不是使用Sublime Text 3在Python 3中打印UTF-8的重复,我之前已经链接到这个问题.
这是print文件:
{ "cmd": ["python", "-u", "$file"], …Run Code Online (Sandbox Code Playgroud) 在我的网站上,当点击链接时,我需要显示一个模态弹出窗口(参见此解决方案):
问题:显示时:
模态弹出窗口中的外部网站,大小合适(参见链接#1)
在模态弹出窗口中的jpeg图像,大小不正常,从某种意义上说它不适应屏幕(参见链接#2):
问题:如何使用模态弹出窗口显示的JPG图像iframe自动调整其大小,即如果JPG的高度很高,它会自动调整大小?即与在新窗口中显示图像时完全一样(参见链接#3)
PS:尝试使用此代码段时,不要忘记在浏览器中启用加载不安全脚本.如果不是,则不会显示iframe.
或者使用这个现场演示jsfiddle.
document.getElementById("link1").onclick = function(e) {
e.preventDefault();
document.getElementById("popupdarkbg").style.display = "block";
document.getElementById("popup").style.display = "block";
document.getElementById('popupiframe').src = "http://example.com";
document.getElementById('popupdarkbg').onclick = function() {
document.getElementById("popup").style.display = "none";
document.getElementById("popupdarkbg").style.display = "none";
};
return false;
}
document.getElementById("link2").onclick = function(e) {
e.preventDefault();
document.getElementById("popupdarkbg").style.display = "block";
document.getElementById("popup").style.display = "block";
document.getElementById('popupiframe').src = "https://i.imgur.com/pz2iPBW.jpg";
document.getElementById('popupdarkbg').onclick = function() {
document.getElementById("popup").style.display = "none";
document.getElementById("popupdarkbg").style.display = "none";
}; …Run Code Online (Sandbox Code Playgroud)我知道如何读取文件,将这些字节传递给哈希算法(例如 MD5SUM、SHA256 或 CRC32),并获取哈希值。
在这里我问的问题略有不同:
每次我们在 NTFS 分区上写入/修改文件时,它是否会重新计算哈希或 CRC32 并将此信息存储在 NTFS 元数据/FAT/MFT(主文件表)中(我不记得确切的名称)?
注意:重要的是我只想读取存储在文件系统中的存储哈希/CRC(即读取几个字节,最多应该是几毫秒),而不是重新计算哈希(这将花费很多秒来计算 10 GB 文件)。
如果是这样,如何使用 Python 访问特定文件的 CRC 或哈希值?有没有类似的东西:
import ntfsutil
ntfsutil.getCRC('d:/big50GBfile.dat') # done in < 10 ms
Run Code Online (Sandbox Code Playgroud) 这段代码(灵感来自哪个是在 Python 上模拟键盘和鼠标的最简单方法?)打开一个记事本并每秒发送 A、B、C、D、...、Z 键:
import win32com.client, time
shell = win32com.client.Dispatch("WScript.Shell")
shell.Run('Notepad')
time.sleep(1)
shell.AppActivate("Notepad")
for i in range(65,91):
shell.SendKeys(chr(i))
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
我想让这个操作在后台继续,继续我在计算机上的工作,并将击键发送到记事本(在后台)。
问题:如果我同时打开另一个应用程序(例如:浏览器),击键将被发送到当前活动窗口,这是我不想要的!
问题:即使此应用程序不在前台,如何让 Python仅将击键发送到 notepad.exe ?
上下文:我正在自动化一些长期任务,要求我的 Python 脚本app.exe在大约 15 分钟内向(在后台)发送击键,但同时我想用计算机做其他事情。
注意:更一般地说,我感兴趣的用例是进程 app.exe 可能打开对话框、关闭对话框、打开其他窗口的情况,因此解决方案应该能够将击键发送到进程的活动窗口. 因此,像这里这样具有固定 hWnd 的解决方案不能直接工作。
我将此添加到.htaccessWordPress 网站:
<files xmlrpc.php>
order allow,deny
deny from all
</files>
Run Code Online (Sandbox Code Playgroud)
它有效,当有人尝试访问时http://example.com/xmlrpc.php,会显示此消息:
Forbidden
您无权访问此服务器上的 /xmlrpc.php。
但是,日志仍然显示 ( less /var/log/apache2/error.log):
[Thu May 02 10:02:03.316061 2019] [access_compat:error] [pid 19467]
[client 1.2.3.4:49409] AH01797: client denied by server
configuration: /path/to/xmlrpc.php
Run Code Online (Sandbox Code Playgroud)
如何拒绝访问 xmlrpc.php(可能来自 .htaccess)但防止它出现在 Apache 日志中?
我正在rsync用 Python 编写一个类似玩具的工具。与许多类似的工具一样,它首先使用非常快的哈希作为滚动哈希,然后在找到匹配项后使用 SHA256(但后者不在此处的主题:SHA256、MDA5 等作为滚动哈希太慢)哈希)。
我目前正在测试各种快速哈希方法:
import os, random, time
block_size = 1024 # 1 KB blocks
total_size = 10*1024*1024 # 10 MB random bytes
s = os.urandom(total_size)
t0 = time.time()
for i in range(len(s)-block_size):
h = hash(s[i:i+block_size])
print('rolling hashes computed in %.1f sec (%.1f MB/s)' % (time.time()-t0, total_size/1024/1024/(time.time()-t0)))
Run Code Online (Sandbox Code Playgroud)
我得到:0.8 MB/s ...所以Python内置hash(...)函数在这里太慢了。
哪种解决方案可以在标准机器上实现至少 10 MB/s 的更快哈希值?
我尝试过
import zlib
...
h = zlib.adler32(s[i:i+block_size])
Run Code Online (Sandbox Code Playgroud)
但也好不了多少(1.1 MB/s)
我尝试过sum(s[i:i+block_size]) % modulo,它也很慢
有趣的事实:即使没有任何哈希函数,循环本身也很慢!
t0 = …Run Code Online (Sandbox Code Playgroud)注意:我已经阅读过如何在不安装 IDE 的情况下在构建服务器上安装 VS2017 版本的 msbuild?但这并不能解决完全无 GUI、仅脚本安装的问题。
这些年来,我注意到以下几点:
我从Github下载了一个项目;或者打开我的一个旧项目(比如 4 年前的项目)
跑步msbuild.exe theproject.sln
哎呀,我没有正确的 Visual Studio 版本/.NET Framework 版本/缺少正确的 SDK(这里是许多其他示例情况)
然后花 X 小时浏览https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019等网站,安装一个包,然后注意到它不是正确的(msbuild仍然失败),下载另一个包,安装它等等。
最后你已经下载了 8 GB 的软件包,等待下载,等待安装,等待重新启动,但你仍然不确定它是否有效
您的计算机现在混乱不堪,同时安装了 5 个不同版本的 SDK,这些 SDK 可能会相互冲突(Z 版本是否覆盖/卸载了 Y 版本?)
这可能是避免此问题的解决方案:
如何从命令行安装所需的 MS 构建工具?(我不想使用任何 IDE,我想编写所有内容的脚本)
如果可能的话,我会一次性为build.bat每个项目创建一个文件,如下所示:
msbuildget --package=VC14 --installdir=c:\buildtools\vc14 # automatically download and install
C:\buildtools\vc14\bin\msbuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)
或者
msbuildget --package=.NET-35 --installdir=c:\buildtools\net35
C:\buildtools\net35\bin\msbuild.exe myproject.sln
Run Code Online (Sandbox Code Playgroud)
这个怎么做?
通过这种方法,即使你打开一个6年的项目,你也应该能够构建它。
我读过类似的问题,例如“我们很抱歉,发生服务器错误。请稍等片刻,然后再试一次。”以及许多其他问题,但它们特定于其他类型的错误。
我有一个 Google Apps 脚本运行和处理带有分钟计时器的 Gmail 电子邮件。
每天我都会通过电子邮件收到日志We're sorry, a server error occurred. Please wait a bit and try again.(请参见下面的屏幕截图 1)。问题在于:
没有发生错误所在行的报告,因此很难调试
它时不时地随机发生,即使在这个精确的时间没有发生任何事情(没有要处理的电子邮件),并且在 99.9% 的时间里,一切正常,没有错误。当没有要处理的电子邮件时,我不明白为什么此代码会失败:
var mylabel = GmailApp.getUserLabelByName('emailstoprocess');
var threads = mylabel.getThreads();
for (var i = 0; i < threads.length; i++) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
在我的脚本中,我不调用任何外部 API,只调用 Gmail API,并且没有耗时的循环(尤其是当没有新电子邮件时:脚本应该什么都不做)。我怎样才能控制这个DEADLINE_EXCEEDED错误(见下面的截图 #2)?确实在仪表板,Executions页面中,我看到:We're sorry, a server error occurred: DEADLINE_EXCEEDED。
DEADLINE_EXCEEDED即使我的脚本在失败时什么也没做,如何避免这个错误?
或者至少如何避免每天收到有关此的通知?
javascript google-apps deadlines google-apps-script gmail-api
python ×5
windows ×5
filesystems ×2
javascript ×2
.htaccess ×1
apache ×1
automation ×1
c ×1
c# ×1
colormap ×1
deadlines ×1
encoding ×1
filenames ×1
for-loop ×1
gmail-api ×1
google-apps ×1
hash ×1
html ×1
iframe ×1
msbuild ×1
ntfs ×1
ntfs-mft ×1
numpy ×1
php ×1
popup ×1
sha256 ×1
spectrogram ×1
sublimetext ×1
utf-8 ×1
visual-c++ ×1
wildcard ×1
winapi ×1
wordpress ×1
xml-rpc ×1