我正在编写一些与redmine接口的代码,我需要上传一些文件作为过程的一部分,但我不知道如何从包含二进制文件的python中执行POST请求.
我试图在这里模仿命令:
curl --data-binary "@image.png" -H "Content-Type: application/octet-stream" -X POST -u login:password http://redmine/uploads.xml
Run Code Online (Sandbox Code Playgroud)
在python(下面)中,它似乎不起作用.我不确定问题是否与编码文件有关,或者标题是否有问题.
import urllib2, os
FilePath = "C:\somefolder\somefile.7z"
FileData = open(FilePath, "rb")
length = os.path.getsize(FilePath)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, 'http://redmine/', 'admin', 'admin')
auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
request = urllib2.Request( r'http://redmine/uploads.xml', FileData)
request.add_header('Content-Length', '%d' % length)
request.add_header('Content-Type', 'application/octet-stream')
try:
response = urllib2.urlopen( request)
print response.read()
except urllib2.HTTPError as e:
error_message = e.read()
print error_message
Run Code Online (Sandbox Code Playgroud)
我有权访问服务器,它看起来像编码错误:
...
invalid byte sequence in UTF-8
Line: 1
Position: …Run Code Online (Sandbox Code Playgroud) 我公司开发了工程程序API.它是用C++开发的,但我们为以下语言创建了包装器:
目前,文档是由一堆脚本生成的,并且开始耗费时间来保持100%.我想知道是否有办法让doxygen/sphinx或其他程序一次性生成C/C++,VB和MATLAB的文档.Python部分由SWIG完成.目前的输出是这样的:
我使用python 2.6.6,我需要重载默认的python打印功能.我需要这样做,因为此代码可用于必须使用内置函数生成输出的系统,否则不显示输出.
所以,例如,如果你有一个像这样的python脚本:
from __future__ import print_function
def NewPrint(Str):
with open("somefile.txt","a") as AFile:
AFile.write(Str)
def OverloadPrint():
global print
print = NewPrint
OverloadPrint()
print("ha")
Run Code Online (Sandbox Code Playgroud)
它工作正常."重载"打印的输入位于NewPrint指定的文件中.
现在考虑到这一点,我希望能够在上面的几行中运行并打印以执行NewPrint在整个脚本执行期间所做的事情.现在,如果我从另一个使用print的模块调用一个函数,它将使用内置的print而不是我刚刚覆盖的那个.我想这与命名空间和内置函数有关,但我的python不够好.
编辑:
我试着保持简单,但看起来这样会造成更多的混乱......
我知道我的例子没有做打印功能实际做的事情.我如何考虑编码它的一个更好的例子是(我知道仍然不是很好):
def hli_print(*args, **kw):
"""
print([object, ...], sep=' ', end='\n', file=sys.stdout)
"""
sep = kw.get('sep', ' ')
end = kw.get('end', '\n')
File = kw.get('file', sys.stdout)
args = [str(arg) for arg in args]
string = sep.join(args) + end
File.write(string)
hli_Print(string)
Run Code Online (Sandbox Code Playgroud)从上面的2开始,您可以看到我必须使用的功能打印到GUI"hli_Print"它是一个通过swig包装器公开的C++函数.
从所有的评论我想只是使用一些print_()函数而不是print()(这是我们目前做的)可能是最好的,但我真的很好奇,看看在python中是否有可能做我做的事情描述.
我们的存储库有一个主分支,但似乎我们的一个同事有一个具有不同历史的主分支.昨天他把他的主人合并成了主人并推了推.所以今天我们中的一些人已经开始工作了.当我们意识到这个问题已经过了几个小时的工作......
所以我的问题是如何撤消他的合并,但仍然保持今天的代码更改?左侧是我们目前的状态,右侧是我正在拍摄的.我应该改变吗?或者有办法撤消合并?什么是最好的方法?
编辑1:我不认为这是Undo一个尚未推送的Git合并的副本,因为提交被推送到原点以及我有其他提交错误后我想保留历史记录.
编辑2:我试图改变,问题是新手在过去的两周内融入了他的主分支......所以即使我还原我也没有摆脱他创造的新"时间轴"......我只要我摆脱他的时间表,重写历史没有问题......
编辑3:
最后,我最终找到了一个未受影响的存储库版本,并回复了事件发生后所做的修改......
我们一直在使用Gerrit进行代码审查,但现在我们希望将GitLab的CI用作代码审查审阅者之一.基本上,如果GitLab CI构建成功,则审核将通过GitLab CI表示的用户.
我想我可以设置几个钩子来让两个系统都能说话,但是我想知道是否有人已经这样做了和/或是否有人可以给我指示如何让它运行.
我有一个C函数,doxygen看起来像这样:
long function( classA * obj1,
classB * obj2,
classC ** obj3,
long value,
const char * name1,
const char * name2,
classD ** obj4,
classD ** obj5,
classD ** obj6
)
Run Code Online (Sandbox Code Playgroud)
我需要从python中调用它并获取最后3个参数传递给另一个dll.目前我可以调用DLL,但如果我尝试将最后3个参数传递给另一个函数,我会得到如下错误:
WindowsError: exception: access violation writing 0x0000000000000000
Run Code Online (Sandbox Code Playgroud)
我可能在ctypes方面做错了什么,我会很感激如何使用它......
第二个DLL看起来像这样:
int function2(ClassD * obj4)
Run Code Online (Sandbox Code Playgroud)
目前我"汇集"了这样的最后3个参数:
temp=ctypes.c_long*1
obj = temp(0)
Run Code Online (Sandbox Code Playgroud)
还有,从ctypes到swig有什么办法吗?显然我可以使用long函数做相反的事情.
我试图冻结一个取决于请求的python应用程序,但我收到以下错误:
Traceback (most recent call last):
File "c:\Python33\lib\site-packages\requests\packages\urllib3\util.py", line 630, in ssl_wrap_socket
context.load_verify_locations(ca_certs)
FileNotFoundError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)
看起来很难找到带有可执行文件的ssl证书.我发现这似乎是同样的问题,但我无法弄清楚他们是如何让它工作的.主要问题似乎是请求捆绑的证书不会复制到压缩库.因此,我似乎必须强制cx_freeze捆绑证书,然后从我的脚本指向它.
从这个简单的脚本开始一切正常:
import requests
r = requests.get("https://yourapihere.com")
print(r.json())
Run Code Online (Sandbox Code Playgroud)
然后,如果我添加证书文件我stat获取错误:
import requests
r = requests.get("https://yourapihere.com", cert=requests.certs.where())
print(r.json())
Run Code Online (Sandbox Code Playgroud)
-
Traceback (most recent call last):
File "c:\Python33\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 480, in urlopen
body=body, headers=headers)
File "c:\Python33\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 285, in _make_request
conn.request(method, url, **httplib_request_kw)
File "c:\Python33\lib\http\client.py", line 1065, in request
self._send_request(method, url, body, headers)
File "c:\Python33\lib\http\client.py", line 1103, in _send_request
self.endheaders(body)
File …Run Code Online (Sandbox Code Playgroud) 一位同事正在玩git revert今天他结束了一个奇怪的情况:
git init
echo 1 > file.txt
git add file.txt
git commit -m "Commit 1"
# Say this generates hash aaa
cat file
1
echo 2 >> file.txt
git add file.txt
git commit -m "Commit 2"
# Say this generates hash bbb
cat file
1
2
echo 3 >> file.txt
git add file.txt
git commit -m "Commit 3"
# Say this generates hash ccc
cat file
1
2
3
git revert bbb
#line above does not work
Run Code Online (Sandbox Code Playgroud)
恢复工作不起作用,并最终采取樱桃挑选的情况.我期待以下结果:
cat …Run Code Online (Sandbox Code Playgroud) 我正在玩这个问题的答案,我在clang和gcc之间得到了不同的结果.使用以下代码:
#include <iostream>
#include <vector>
using namespace std; // for rbegin() and rend()
template <typename T>
struct reversion_wrapper { T& iterable; };
template <typename T>
auto begin(reversion_wrapper<T> w) { return rbegin(w.iterable); }
template <typename T>
auto end(reversion_wrapper<T> w) { return rend(w.iterable); }
template <typename T>
reversion_wrapper<T> reverse(T&& iterable) { return { iterable }; }
int main() {
auto z = reverse(vector<int>{1, 2, 3});
cout << z.iterable.size() << '\n';
vector<int> a{ 1, 2, 3 };
auto x = reverse(a); …Run Code Online (Sandbox Code Playgroud)