小编Pau*_*aul的帖子

解析askopenfilenames()的结果?

我正在尝试从Python 3.2中的tkinter.filedialog.askopenfilenames()获取文件名列表.

    files = askopenfilenames(initialdir="C:\\Users\\BVCAP\\Videos", title="Select files")
    self.num_files.set(len(files))  
Run Code Online (Sandbox Code Playgroud)

我期望输出是一个元组(或可能是一个列表),每个元素都包含一个文件名.据我所知,它返回一个字符串,其中每个元素都包含在花括号{}中,如下所示:

{C:\Users\BVCAP\File1.txt} {C:\Users\BVCAP\File2.txt}

如果我尝试打印(文件),这就是我得到的.看起来它的格式就像某种类型的列表,但它似乎只是一个字符串.我做错了什么,或者这个函数的输出实际上是一个格式化为文件列表的字符串,我需要自己拆分.

python windows tkinter python-3.x

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

Android - 在AlertDialog中刷新数据?

所以,如果我像这样创建一个AlertDialog:

AlertDialog.Builder b = new AlertDialog.Builder();
b.setItems(MyStringArray, MyListener);
b.create().show();
Run Code Online (Sandbox Code Playgroud)

然后我想更新列表中的项目,即MyStringArray已更改为包含更多或更少的项目.我似乎找不到办法做到这一点.到目前为止,我已经尝试从AlertDialog获取ListView,但我似乎无法让.setAdapter工作.这是正确的方法,还是有更好的方法来做到这一点?

java android android-alertdialog

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

编码西格玛公式?

Python初学者,运行2.7

我找不到Pythonic方法来编写以下公式.我的目标是有一个单一的功能,我可以输入值(在以前的尝试我只发现了一个高度重复的暴力解决方案).

式

必要的信息:

如果您不知道sigma符号的含义:请看这里

# 'v' is the formula
# 'i' 'j' 'k' are actors with numerical attributes 'c' 's' and 'x'
# 'n' = length of the following lists (length is identical for all four lists)

values_1 = [Bob, Sue, Mary, Jo...] # i, j, and k are any 3 values drawn from this list  
                        # under the condition that i != j != k

values_2 = [5,6,7,8...] # c is drawn from this list. 
                        # if …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python pytz:不存在的时间得到AmbiguousTimeError,而不是NonExistentTimeError

如何判断当地时间是否不存在?我正在尝试使用pytz,但它会抛出一个AmbiguousTimeError,而不是NonExistentTimeError.

由于夏令时,2013-3-31 02:30将永远不会在哥本哈根发生.

local_tz = timezone('Europe/Copenhagen')
try:
    non_e = local_tz.localize(datetime.datetime(2013, 3, 31, 2, 30), is_dst = None) 
except pytz.AmbiguousTimeError:
    print "AmbiguousTimeError"
Run Code Online (Sandbox Code Playgroud)

它转到异常处理程序.我试过了:

 except pytz.NonExistentTimeError: #'module' object has no attribute 'NonExistentTimeError'
 except pytz.exceptions.NonExistentTimeError: #'module' object has no attribute 'exceptions'
Run Code Online (Sandbox Code Playgroud)

用户通过表单向我提供日期和时间.这些是在当地时间,我需要看看日期和时间是否正常.

我正在使用Django USE_TZ = True,但我认为这不重要.

python timezone pytz

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

获取DBPedia信息框类别

我目前正在寻找一种通过SPARQL端点查询DBPedia的Infobox Onyology数据库的方法,以获取类的列表,所选类的子类以及给定类的属性.据我所知,您要么需要知道您正在寻找的属性,要么搜索特定的内容 - 我发现的所有示例似乎都基于您想要搜索特定内容的想法(比如某个高度以上的城市人口等),而我想建立一些可以有效"浏览"类别的东西.例如,从此类层次结构图上的"owl:Thing"的子类列表开始,向用户显示所选子类的子类列表.似乎可以通过映射wiki浏览这样的东西,但最好直接查询SPARQL端点.

是否有一些简单的SPARQL查询会返回这些类的可用类和属性?

更新: 通过迭代查询,我想出了一种方法来获得类层次结构:

SELECT ?subject WHERE {
     ?subject rdfs:subClassOf owl:Thing
}
Run Code Online (Sandbox Code Playgroud)

这返回了owl的子类列表:Thing,如果我用其中一个子类替换owl:Thing,我得到它的子类列表,直到没有子类,此时我可以选择所有的资源由所选子类给出的类型.不过,我仍然不太确定如何获得子类共有的所有属性.

更新2 现在就越来越近了.此查询为我提供了所有属性(dbpedia:property的子项),它们也是一个国家/地区,以及它们的标题:

SELECT DISTINCT ?prop ?title WHERE {
     ?country ?prop ?value.
     ?country a <http://dbpedia.org/ontology/Country>.
     ?prop rdf:type rdf:Property.
     ?prop rdfs:label ?title
}
Run Code Online (Sandbox Code Playgroud)

这实际上是我真正要求的.我现在要做的最后一件事是尝试按照它们出现的页数来排序(可能最常见的属性是最感兴趣的属性).

rdf sparql dbpedia

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

Matplotlib:轮廓上的彩条,无条纹

在matplotlib中,我想创建一个插入颜色条来显示我的轮廓图的比例,但是当我使用轮廓创建轮廓时,颜色条有白色条纹穿过它,而当我使用contourf时,颜色条有适当的"光滑"外观:

轮廓比较

如何从正常轮廓图上的填充轮廓中获得漂亮的光滑色条?我想也可以使用填充轮廓,其中零级可以设置为白色.

以下是生成此示例的代码:

from numpy import linspace, outer, exp
from matplotlib.pyplot import figure, gca, clf, subplots_adjust, subplot
from matplotlib.pyplot import contour, contourf, colorbar, xlim, ylim, title
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

# Make some data to plot - 2D gaussians
x = linspace(0, 5, 100)
y = linspace(0, 5, 100)
g1 = exp(-((x-0.75)/0.2)**2)
g2 = exp(-((y-4.25)/0.1)**2)
g3 = exp(-((x-3.5)/0.15)**2)
g4 = exp(-((y-1.75)/0.05)**2)
z = outer(g1, g2) + outer(g3, g4) 

figure(1, figsize=(13,6.5))
clf()

# Create a contour and a contourf
for ii …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

替换pytest中的测试用例继承?

背景

在 Python 的unittest框架中,在一组基本测试上使用继承来将一整套测试应用于新问题,并偶尔添加额外测试是一种相当常见的习惯用法。一个简单的例子是:

from unittest import TestCase

class BaseTestCase(TestCase):
    VAR = 3

    def test_var_positive(self):
        self.assertGreaterEqual(self.VAR, 0)

class SubTestCase(BaseTestCase):
    VAR = 8

    def test_var_even(self):
        self.assertTrue(self.VAR % 2 == 0)
Run Code Online (Sandbox Code Playgroud)

运行时,运行 3 个测试:

$ python -m unittest -v
test_var_positive (test_unittest.BaseTestCase) ... ok
test_var_even (test_unittest.SubTestCase) ... ok
test_var_positive (test_unittest.SubTestCase) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.000s
Run Code Online (Sandbox Code Playgroud)

如果您正在测试类层次结构,这尤其有用,其中每个子类都是父类子类型,因此除了它自己的测试套件之外,还应该能够通过父类的测试套件。

问题

我想切换到 using pytest,但我有很多这样构建的测试。据我所知,pytest打算TestCase用fixtures替换类的大部分功能,但是是否有允许测试继承的pytest习惯用法,如果有的话,它是什么

我知道pytest可以用于运行unittest样式测试,但支持有限,我想 …

python unit-testing pytest python-unittest

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

使用uigetfile而不是uigetdir来获取Matlab中的目录

所以我对MATLAB目录选择gui有疑问.我需要使用GUI来选择目录,但问题是uigetdir接口很糟糕.如果我这样打电话:

blah = uigetfile('C:\...\T2 Measurements');
Run Code Online (Sandbox Code Playgroud)

这就是它告诉我的:

uigetdir结果

如你所见,这太糟糕了.有大量关于文件系统中文件位置的无关信息,相关信息都在下面.理想情况下,我想指定uigetdir函数使用uigetfile GUI,或者只是将参数传递给uigetfile,告诉它我正在寻找一个目录,而不是单个文件,因为这就是uigetfile GUI的样子:

uigetfile结果

但是,当然,这要求我选择一个文件,而不是目录.显然目录没有打开,所以我想我可以让用户选择文件夹中的任何随机文件,我可以获取路径名,但是有更好的方法吗?在另一个应用程序中,我可以想象我的"选择文件夹中的文件"解决方法将无法正常工作.

更新

我对Andrew Janke的代码进行了一些非常小的调整,使其与uigetdir()采用相同的参数.这是我想出的:

function [pathname] = uigetdir2(start_path, dialog_title)
% Pick a directory with the Java widgets instead of uigetdir

import javax.swing.JFileChooser;

if nargin == 0 || start_path == '' || start_path == 0 % Allow a null argument.
    start_path = pwd;
end

jchooser = javaObjectEDT('javax.swing.JFileChooser', start_path);

jchooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if nargin > 1
    jchooser.setDialogTitle(dialog_title);
end

status = jchooser.showOpenDialog([]);

if status == JFileChooser.APPROVE_OPTION
    jFile = jchooser.getSelectedFile();
    pathname = char(jFile.getPath());
elseif status == JFileChooser.CANCEL_OPTION …
Run Code Online (Sandbox Code Playgroud)

matlab user-interface

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

编写一个等效于返回其输入对象的Python函数的pyo3函数

我想为我的库编写一个Rust后端,我需要在以下函数中实现以下函数的等价物pyo3:

def f(x):
    return x
Run Code Online (Sandbox Code Playgroud)

这应该返回输入相同的对象,获取返回值的函数应该包含对输入的新引用.如果我在C API中写这个,我会把它写成:

PyObject * f(PyObject * x) {
    Py_XINCREF(x);
    return x;
}
Run Code Online (Sandbox Code Playgroud)

PyO3,我觉得相当混乱导航之间的差异PyObject,PyObjectRef,&PyObject,Py<PyObject>,Py<&PyObject>.

这个函数最天真的版本是:

extern crate pyo3;

use pyo3::prelude::*;

#[pyfunction]
pub fn f(_py: Python, x: &PyObject) -> PyResult<&PyObject> {
    Ok(x)
}
Run Code Online (Sandbox Code Playgroud)

除其他外,生命周期x和返回值不一样,加上我认为没有机会pyo3增加引用计数x,实际上编译器似乎同意我的意见:

error[E0106]: missing lifetime specifier
 --> src/lib.rs:4:49
  |
4 | pub fn f(_py: Python, x: &PyObject) -> PyResult<&PyObject> {
  | …
Run Code Online (Sandbox Code Playgroud)

python rust pyo3

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

将 nbconvert 升级到 6.x+ 时如何解决 TemplateNotFound 错误?

当尝试使用我过去使用过的模板制作新的基于 Jupyter 的演示文稿时,我发现当nbconvert升级到 6.0 以上时,我收到与缺少内置模板相关的错误basic.tpl。为此,创建一个最小的重现器,创建一个名为的模板文件custom.tpl

{% extends 'basic.tpl' %}
Run Code Online (Sandbox Code Playgroud)

然后拿起任何 Jupyter 笔记本并pip install jupyter nbconvert运行nbconvert notebook.ipynb --to=slides --template=custom.tpl。你会得到这样的异常:

[NbConvertApp] Converting notebook example.ipynb to slides
Traceback (most recent call last):
  File "/tmp/tmp.niaMlxSIbz/venv/bin/jupyter-nbconvert", line 8, in <module>
    sys.exit(main())
...
  File "/tmp/tmp.niaMlxSIbz/custom.tpl", line 1, in top-level template code
    {% extends 'basic.tpl' %}
jinja2.exceptions.TemplateNotFound: basic.tpl

Run Code Online (Sandbox Code Playgroud)

如果您这样做pip install 'nbconvert < 6.0',您会发现相同的命令成功了。

我想这与6.0 中模板工作方式的变化有关,但我相信.tpl模板仍然是受支持的,甚至有一个列出的PR 可以恢复基本模板,但我在任何地方都找不到任何说明如何使用对新位置的引用来更新我的模板。

有没有办法通过更改对 的引用来解决此问题'basic.tpl'? …

jupyter jupyter-notebook nbconvert

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