小编Bas*_*asj的帖子

*.*在C中的argv [1]中

背景:某些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等)

c windows filesystems filenames wildcard

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

使用Windows 7在Sublime Text 2的控制台中打印utf-8字符串

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)

python windows encoding utf-8 sublimetext

5
推荐指数
2
解决办法
435
查看次数

自动聚焦到 div,因此我们可以使用箭头键滚动而无需先单击

我有一个页面有几个 <div>包含容器。

如何在页面加载时将焦点放在其中之一,以便用户可以使用箭头键滚动(甚至SPACE滚动)而无需单击div一个?

我试过了:

<div id="main" autofocus>
Run Code Online (Sandbox Code Playgroud)

autofocus似乎不适用于 non-input div

_

可能是一个解决方案,但浏览器地址栏会显示我不想要的 id http://example.com/#main

<body onload="location.hash = 'main';">
<div id="main">content</div>
</body>
Run Code Online (Sandbox Code Playgroud)

_

示例:当您打开https://en.wikipedia.org/wiki/Main_Page 时,您可以立即使用Down arrow键 或Space滚动,而无需单击任何地方。

html javascript

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

在模态弹出框+ iframe中显示时的外部网站/图像大小

在我的网站上,当点击链接时,我需要显示一个模态弹出窗口(参见此解决方案):

  • 有时会显示一个外部网站(下面链接#1)
  • 有时只显示JPG图像(下面链接#2)

问题:显示时:

  1. 模态弹出窗口中的外部网站,大小合适(参见链接#1)

  2. 在模态弹出窗口中的jpeg图像,大小不正常,从某种意义上说它不适应屏幕(参见链接#2):

在此输入图像描述

  1. jpeg图像在新窗口中,大小合适,自动适应屏幕(参见链接#3)

在此输入图像描述

问题:如何使用模态弹出窗口显示的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)

html javascript iframe popup

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

字符串与 Python + Sqlite 的相似度(Levenshtein 距离/编辑距离)

Python+Sqlite 中是否有可用的字符串相似性度量,例如sqlite3模块?

用例示例:

import sqlite3
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute('CREATE TABLE mytable (id integer, description text)')
c.execute('INSERT INTO mytable VALUES (1, "hello world, guys")')
c.execute('INSERT INTO mytable VALUES (2, "hello there everybody")')
Run Code Online (Sandbox Code Playgroud)

此查询应匹配 ID 为 1 的行,但不匹配 ID 为 2 的行:

c.execute('SELECT * FROM mytable WHERE dist(description, "He lo wrold gyus") < 6')
Run Code Online (Sandbox Code Playgroud)

如何在 Sqlite+Python 中做到这一点?

关于我到目前为止发现的内容的注释:

  • Levenshtein距离,即单字符编辑(插入,删除或替换)的最小数量需要改变一个字到另一个,可能是有用的,但我不知道是否SQLite中存在的正式实施(我看到了一些自定义实现,比如这个

  • 所述Damerau-的Levenshtein是相同的,除了它也允许两个相邻字符之间换位; 它也被称为编辑距离

  • 我知道自己定义一个函数是可能的,但是实现这样的距离并不容易(对数据库进行超高效的自然语言处理比较真的很重要),这就是为什么我想看看 Python / Sqlite 是否已经具有这样的功能一个工具

  • Sqlite 具有 …

python sqlite similarity string-comparison

5
推荐指数
2
解决办法
2777
查看次数

使用 git 在 Python 网络服务器中自动增加版本号

我有一个我在本地开发的 Python 网络服务器(使用 Bottle 或 Flask 或任何其他):

BUILDVERSION = "0.0.128"

@route('/')
def homepage():    
    ... # using a template, and the homepage shows the BUILDVERSION in the footer
        # so that I always know which live version is running

...

run(host='0.0.0.0', port=8080)
Run Code Online (Sandbox Code Playgroud)

每次我有重大更新时,我都会:

git commit -am "Commit name" && git push
Run Code Online (Sandbox Code Playgroud)

并且更新了远程版本。(注意:我git config receive.denyCurrentBranch updateInstead在远程仓库上使用)。

问题:我经常忘记BUILDVERSION在每次提交时手动增加,然后就不容易区分哪个版本正在运行等(因为连续两次提交可能具有相同的BUILDVERSION!)

问题:有没有办法BUILDVERSION使用 Python + Git 在每次提交时自动递增?或任何类似的(BUILDVERSION 也可以是提交 ID...),它们将以小字符出现在网站的页脚中,允许区分 Python 代码的连续版本。

python git git-commit

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

Sqlite具有真正的"全文搜索"和拼写错误(FTS +拼写一起)

假设我们有100万行像这样:

import sqlite3
db = sqlite3.connect(':memory:')
c = db.cursor()
c.execute('CREATE TABLE mytable (id integer, description text)')
c.execute('INSERT INTO mytable VALUES (1, "Riemann")')
c.execute('INSERT INTO mytable VALUES (2, "All the Carmichael numbers")')
Run Code Online (Sandbox Code Playgroud)

背景:

我知道如何用Sqlite做到这一点:

  • 找到一个单字查询的行,最多有一些拼写错误spellfix模块和Levenshtein距离(我在这里发布了一个详细的答案,关于如何编译它,如何使用它,...):

    db.enable_load_extension(True)
    db.load_extension('./spellfix')
    c.execute('SELECT * FROM mytable WHERE editdist3(description, "Riehmand") < 300'); print c.fetchall()
    
    #Query: 'Riehmand'
    #Answer: [(1, u'Riemann')]
    
    Run Code Online (Sandbox Code Playgroud)

    使用1M行,这将是超级慢!如此处详述,postgresql可能会对此进行优化trigrams.Sqlite提供的快速解决方案是使用VIRTUAL TABLE USING spellfix:

    c.execute('CREATE VIRTUAL TABLE mytable3 USING spellfix1')
    c.execute('INSERT …
    Run Code Online (Sandbox Code Playgroud)

python sqlite full-text-search levenshtein-distance

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

使用 plt.imshow 实现更快的刷新率

我想在进行计算时显示一些图像numpy

import numpy as np
import matplotlib.pyplot as plt
plt.ion()  # Turn the interactive mode on.
for i in range(100):
    A = np.random.randn(10,10)
    plt.imshow(A)
    plt.pause(0.001)
    # do some other numpy computations here (they take < 1 ms)
Run Code Online (Sandbox Code Playgroud)

显示图像不是很快,而是相当慢

我并不是要求每秒 100 帧,但我认为 30 fps 是可能的,但事实并非如此:经过几次迭代后,我在标准 i5 笔记本电脑(Windows 7 x64)上接近 2 fps。

如何拥有更快的imshow刷新率?

笔记:

  • 我已经尝试过Fast Live Plotting in Matplotlib / PyPlot的主要答案,但对于blit这样一个简单的任务来说,这似乎是一个复杂的方法(使用参数),而且我也没有得到 28 fps 而只有 15 fps

  • 我只想将矩阵显示为图像:没有边框,没有轴,没有子图等,我想这可以比解决方案Fast Live Plotting …

python numpy matplotlib imshow

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

NTFS是否存储每个inode/文件的哈希值或CRC32,如何访问它?

我知道如何读取文件,将这些字节传递给哈希算法(例如 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 windows filesystems ntfs ntfs-mft

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

在 Windows 上使用 Python 将 SVG 转换为 PNG

问题:哪个可重现的过程可以使 Windows Python 用户将 SVG 图像渲染为 PNG?


许多问题/答案(例如Convert SVG to PNG in PythonServer-side SVG to PNG (or some other image format) in python,由于下面解释的原因,它们不重复)解释了如何使用 Python 将 SVG 转换为 PNG .

不幸的是,它们都不能用于 Python + Windows。经过 20 多分钟,以及许多不同的尝试,我仍然无法做到。有关失败尝试的更多详细信息:

python windows svg cairo

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