小编Kon*_*rad的帖子

将POST请求卷入pycurl代码

我正在尝试将以下curl请求转换为pycurl:

curl -v
-H Accept:application/json \
-H Content-Type:application/json \
-d "{
    name: 'abc',
    path: 'def',
    target: [ 'ghi' ]
}" \
-X POST http://some-url
Run Code Online (Sandbox Code Playgroud)

我有以下python代码:

import pycurl, json

c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://some-url')
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
data = json.dumps({"name": "abc", "path": "def", "target": "ghi"})
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.VERBOSE, 1)
c.perform()
print curl_agent.getinfo(pycurl.RESPONSE_CODE)
c.close()
Run Code Online (Sandbox Code Playgroud)

执行此操作我有一个错误415:不支持的媒体类型,所以我改变了:

c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
Run Code Online (Sandbox Code Playgroud)

成:

c.setopt(pycurl.HTTPHEADER, [ 'Content-Type: application/json' , 'Accept: application/json'])
Run Code Online (Sandbox Code Playgroud)

这次我有400:不好的请求.但是使用curl的bash代码可行.你知道我应该在python代码中修复什么吗?

python rest post curl pycurl

10
推荐指数
2
解决办法
3万
查看次数

if语句太多了

我有一些话题需要讨论.我有一个24 ifs/elifs 的代码片段.Operation是我自己的类,表示类似的功能Enum.
这是一段代码:

if operation == Operation.START:
    strategy = strategy_objects.StartObject()
elif operation == Operation.STOP:
    strategy = strategy_objects.StopObject()
elif operation == Operation.STATUS:
    strategy = strategy_objects.StatusObject()
(...)
Run Code Online (Sandbox Code Playgroud)

从可读性的角度来看,我有一些顾虑.更好的是将它改成24个类并使用多态?我不相信它会使我的代码可维护......从一方面来说,这些代码if非常清晰,并且不应该难以理解,另一方面,有太多if的代码.

我的问题相当普遍,但是我用Python编写代码所以我不能使用像switch.

你怎么看?


更新:

一个重要的是StartObject(),StopObject()并且StatusObject()是构造函数,我想分配一个对象来strategy引用.

python conditional if-statement code-readability code-maintainability

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

使用django进行CLI工具

使用Django框架开发命令行界面工具有什么意义吗?在我的情况下,将没有任何图形界面.我可以使用它获得什么好处?或者您可能知道CLI的任何其他有用的框架?我想强调用REST API发出HTTP请求.

更新:谢谢你们!我想使用REST API而不是在我的工具中创建它.

python django frameworks command-line-interface

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

在pycurl请求中表单数据

我想用pycurl进行以下curl请求:

curl -v \
-H Accept:application/json \
-F "model={
name: 'zxy',
targets: [ 'abc']
}" \
-F "deployment=@/deployments/MyApp.ear" \
-X POST https://abc.cde
Run Code Online (Sandbox Code Playgroud)

如何将后续-F选项放到后场?

我目前:

c = pycurl.Curl()
c.setopt(pycurl.URL, "https://abc.cde")
c.setopt(pycurl.HTTPHEADER, ['Accept:application/json'])
c.setopt(pycurl.POST, 1)
# set postfield somehow
Run Code Online (Sandbox Code Playgroud)

python rest post pycurl

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

重构python中的if语句

我想和你咨询一段代码。我有:

if tuple_type == Operation.START_SERVER:
    dictionary = ServersDictionary()
    dictionary.start(some_param)
elif tuple_type == Operation.STOP_SERVER:
    dictionary = ServersDictionary()
    dictionary.stop(some_param)
(...)
elif tuple_type == Operation.START_APP:
    dictionary = AppsDictionary()
    dictionary.start(some_param)
elif ...
(....)
Run Code Online (Sandbox Code Playgroud)

我有 27 个 if / elifs。通常,我会进入 map - 函数调度程序,但是在每个 if / elif 之后,我都有两行具有相同字典引用的代码。你能给我建议一些干净的解决方案来代替那些丑陋的结构吗?

创建 27 个类来应用多态或 27 个函数听起来不太好……你怎么看?

python refactoring if-statement code-cleanup

2
推荐指数
1
解决办法
3018
查看次数

OpenMP 中的并行 while/for - 目录中的文件

我有一段代码可以在某个目录中的文件中搜索模式。重点是如何并行化它。我的第一个版本:

DIR * dptr = opendir(DIRNAME);
struct dirent *dir;
while(dir = readdir(dptr)) != NULL) {
    // searching in dir -> d_name;
}
Run Code Online (Sandbox Code Playgroud)

所以我将 while 转换为 for:

#pragma omp parallel
#pragma omp for
for(;(dir = readdir(dptr)) !=NULL;) {
    // searching
}
Run Code Online (Sandbox Code Playgroud)

但现在我有一个错误:

“预期在‘;’之前进行迭代声明或初始化 token.for(;(dir = readdir(dptr)) !=NULL;) "

您知道如何使用适当的 for 循环组织遍历目录中的每个文件吗?

directory parallel-processing for-loop openmp

2
推荐指数
1
解决办法
542
查看次数