我想使用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.如前所述,如果我从终端传递文件名,它就可以工作.
我可以想象,这与字符串编码有关.有人知道如何解决这个问题吗?
我正在尝试使用 GTK 中的 Python 为我的自定义小部件实现高宽几何管理。我的小部件是图像的子类Gtk.DrawingArea,并绘制图像的某些部分。
据我了解 GTK 文档(上面的链接),我必须实现以下 4 种方法:
\n\n现在想知道在Python 中哪里实现这个。
\n\n我试过这个:
\n\nfrom 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")\nRun Code Online (Sandbox Code Playgroud)\n\n但这些方法不会被调用。在 C 中,您定义函数并将其设置为小部件,如下所示:
\n\nstatic 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) 我想为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)