小编tho*_*ink的帖子

如何使用python的argparse与预定义的参数字符串?

我想使用pythons argparse模块来解析我的cli参数字符串.这适用于从终端传递的参数,但不适用于给定的字符串.

import argparse

parser = argparse.ArgumentParser(description='Argparse Test script')
parser.add_argument("param", help='some parameter')

argString = 'someTestFile'
print(argString)

args = parser.parse_args(argString)
Run Code Online (Sandbox Code Playgroud)

如果我运行此脚本,我得到此输出:

~/someTestFile
usage: argparsetest.py [-h] param
argparsetest.py: error: unrecognized arguments: o m e T e s t F i l e
Run Code Online (Sandbox Code Playgroud)

~/someTestFile以某种方式在转变o m e T e s t F i l e.如前所述,如果我从终端传递文件名,它就可以工作.

我可以想象,这与字符串编码有关.有人知道如何解决这个问题吗?

python argparse

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

重写 PyGObject 中的虚拟方法

我正在尝试使用 GTK 中的 Python 为我的自定义小部件实现高宽几何管理。我的小部件是图像的子类Gtk.DrawingArea,并绘制图像的某些部分。

\n\n

据我了解 GTK 文档(上面的链接),我必须实现以下 4 种方法:

\n\n
    \n
  • GtkWidgetClass.get_preferred_width()
  • \n
  • GtkWidgetClass.get_preferred_height()
  • \n
  • GtkWidgetClass.get_preferred_height_for_width()
  • \n
  • GtkWidgetClass.get_preferred_width_for_height()
  • \n
\n\n

现在想知道在Python 中哪里实现这个。

\n\n

我试过这个:

\n\n
from gi.repository import Gtk\nclass Patch(Gtk.DrawingArea):\n  def __init__(self, model, image, position):\n    super(Patch,self).__init__()\n    #\xe2\x80\xa6\n\n  def get_preferred_width(self, *args, **kargs):\n    print("test")\n\n  def get_preferred_height(self, *args, **kargs):\n    print("test")\n\n  def get_preferred_width_for_height(self, *args, **kargs):\n    print("test")\n\n  def get_preferred_height_for_width(self, *args, **kargs):\n    print("test")\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这些方法不会被调用。在 C 中,您定义函数并将其设置为小部件,如下所示:

\n\n
static void\nmy_widget_get_preferred_height (GtkWidget *widget, gint *minimal_height,\n                                gint *natural_height)\n{\n  /* ... */\n}\n  /* …
Run Code Online (Sandbox Code Playgroud)

python gtk virtual-functions pygobject

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

为什么clang在调用站点之前找不到声明的函数?

我想为simd类型提供一些sqrt包装器函数,这样它们可以与std :: sqrt一起从模板中使用.

现在我遇到了问题,他们以某种方式不可见.只能使用std中定义的那些.

这是代码的一个高度减少的部分:

#include <cmath>
#include <pmmintrin.h>

using float_simd = __m128;
using double_simd = __m128d;

float_simd sqrt(float_simd a) { return _mm_sqrt_ps(a); }
double_simd sqrt(double_simd a) { return _mm_sqrt_pd(a); }

template <typename T>
void do_fancy(T val) 
{
    using std::sqrt;
    auto ret = sqrt(val);
    (void)ret;
}

int main() {
    double testDouble = 1.0; 
    float testFloat = 1.0f;
    double_simd testSimdDouble;
    float_simd testSimdFloat;
    do_fancy(testDouble);
    do_fancy(testFloat);
    do_fancy(testSimdDouble);
    do_fancy(testSimdFloat);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在clang给出了这个:

main.cpp:14:16: error: call to function 'sqrt' that is neither visible in …
Run Code Online (Sandbox Code Playgroud)

c++ lookup clang c++11

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

标签 统计

python ×2

argparse ×1

c++ ×1

c++11 ×1

clang ×1

gtk ×1

lookup ×1

pygobject ×1

virtual-functions ×1