我有一个在Python中打开的文件,正在写入另一个输出文件。我需要它是文件大小的16的倍数,所以这是我设计的:
with open(input_file, 'rb') as infile:
with open(output_file, 'wb') as outfile:
while True:
input_chunk = infile.read(64)
if len(input_chunk) == 0:
break
elif len(input_chunk) % 16 > 0:
input_chunk.extend([0 for i in range(len(input_chunk) % 16)])
output_file.write(input_chunk)
Run Code Online (Sandbox Code Playgroud)
不幸的是,它无法将零附加到:
AttributeError: 'str' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)
首先,为什么我在这里有一个字符串,而不是一个字节数组?我正在以二进制模式读取二进制文件。
其次,如果我正在处理一个字符串,我该如何0在该字符串的末尾写入一些带有该值的字节?
我最近遇到了以下代码示例,用于使用带有SHA-256 HMAC的AES-256 CBC加密文件进行身份验证和验证:
aes_key, hmac_key = self.keys
# create a PKCS#7 pad to get us to `len(data) % 16 == 0`
pad_length = 16 - len(data) % 16
data = data + (pad_length * chr(pad_length))
# get IV
iv = os.urandom(16)
# create cipher
cipher = AES.new(aes_key, AES.MODE_CBC, iv)
data = iv + cipher.encrypt(data)
sig = hmac.new(hmac_key, data, hashlib.sha256).digest()
# return the encrypted data (iv, followed by encrypted data, followed by hmac sig):
return data + sig
Run Code Online (Sandbox Code Playgroud)
因为在我的情况下,我加密的不仅仅是一个字符串,而是一个相当大的文件,我修改了代码来执行以下操作: …
我有几个方法我想使用Python requests库进行单元测试.从本质上讲,他们正在做这样的事情:
def my_method_under_test(self):
r = requests.get("https://ec2.amazonaws.com/", params={'Action': 'GetConsoleOutput',
'InstanceId': 'i-123456'})
# do other stuffs
Run Code Online (Sandbox Code Playgroud)
我基本上希望能够测试它
问题是,我希望能够在不实际提出请求的情况下对此进行测试,因为它需要太长时间,而且某些操作可能具有破坏性.
我怎样才能快速轻松地模拟和测试?
我有一个相当简单的Angular项目,它在JavaScript中路由到几个不同的URL:
function RootController($scope) {};
function PageOneController($scope) {};
angular.module('mymodule', []).config(
['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: "templates/root.html",
controller: RootController
}).when('/page1/', {
templateUrl: "templates/page1.html",
controller: PageOneController
}).otherwise({redirectTo: '/'});
}]
);
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好,但我确实需要一种方法,在输入和退出这些路径时运行一些JavaScript函数.即:
$routeProvider.when('/', {
templateUrl: "templates/root.html",
controller: RootController,
onenter: function() { console.log("Enter!"); },
onexit: function() { console.log("Exit!"); }
});
Run Code Online (Sandbox Code Playgroud)
有没有办法在Angular中做到这一点?在输入状态/路由时,我需要绑定事件侦听器,在退出时我需要销毁它们并拆除它们.
我有一堂这样的课:
class Something(object):
def __init__(self):
self._thing_id
self._cached_thing
@property
def thing(self):
if self._cached_thing:
return self._cached_thing
return Thing.objects.get(id=self._thing_id)
Run Code Online (Sandbox Code Playgroud)
当像这样腌制对象时,我想防止对该_cached_thing字段进行腌制,因为它是易失性的并且是专门仅在内存中实现的。
有没有办法向 Pickle 建议我只希望对我的字段的子集进行 pickle?
我正在编写一个自定义过滤器,它依赖于一个名为的常量对象config.这是我到目前为止所得到的:
angular.module('myproject.filters', []).filter('userLink', function () {
return function (user) {
return '';
};
});
Run Code Online (Sandbox Code Playgroud)
我需要将' config'模块注入我的过滤器中,这样我就可以从中提取静态值来构建指向用户对象的链接.
如何将依赖项注入过滤器函数?
我正在为LAME编码器构建一个前端,以便在Gtk/Vala中进行概念验证.
我已安装libmp3lame-dev并希望使用一些给定的编码参数简单地编码WAV文件,并使用Gtk进度条以图形方式显示进度.
我绝对可以弄清楚如何做到这一点,但我不知道如何导入libmp3lame我的Vala文件和与库的接口.
我需要管理我的服务器的Docker镜像缓存,以确保我不填充磁盘.
我想获得一个目前没有被正在运行的容器使用的所有Docker镜像的列表.我可以使用以下命令获取运行Docker容器的列表:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fdbe4426220a ubuntu:latest "/bin/bash" 5 days ago Running compassionate_brown
Run Code Online (Sandbox Code Playgroud)
我还可以使用以下内容获取本地Docker镜像的列表:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest 07f8e8c5e660 3 weeks ago 188.3 MB
ubuntu 12.04.5 ac6b0eaa3203 3 weeks ago 132.5 MB
Run Code Online (Sandbox Code Playgroud)
基于以上信息,我可以断定,我可以rmi的ubuntu:12.04.5,这不再需要为任何基于其上运行.
使用命令行工具解析这种--filter方法ps很糟糕,而且这种方法似乎无法让我根据图像名称进行搜索.我无法看到输出更易于机器读取的列表,因此我可以使用脚本或其他东西来解析旧图像.
Docker是否有办法在填充磁盘之前清理旧的未使用的映像?这似乎是谁自动化发布组织的一个大问题,所以我假设有是在事实上管理这个的一种方式.我在Ubuntu 14.04主机上使用最新的Docker 1.6.
我正在使用一个依赖openssl-sys的库。根据文档,如果我指定OPENSSL_STATIC=1为环境变量,OpenSSL 将静态链接到共享库输出中。
由于一系列复杂的问题,我需要将 OpenSSL 静态链接到我的共享库输出中。
这是我的Cargo.toml:
[package]
name = "api"
version = "0.1.0"
authors = ["Naftuli Kay <me@naftuli.wtf>"]
publish = false
[lib]
name = "lambda"
crate-type = ["cdylib"]
[dependencies]
chrono = { version = "0.4", features = ["serde"] }
constant_time_eq = "0.1.3"
cpython = { version = "0.1", default-features = false }
crowbar = { version = "0.2", default-features = false }
libc = "0.2.29"
lazy_static = "1.0"
log = "0.4.1"
log4rs …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的问题.在AS3中编译正则表达式的最佳方法(最高性能/最低内存使用率等)是什么?
例如,是这样的:
private var expression:RegExp = new RegExp(".*a$");
private function modify():void {
/* uses "expression" to chop up string */
}
Run Code Online (Sandbox Code Playgroud)
比这更快:
private var expression:RegExp = /.*a$/;
private function modify():void {
/* uses "expression" to chop up string */
}
Run Code Online (Sandbox Code Playgroud)
另外,如果我只打算使用一次,是否真的需要使表达式成为实例变量?例如,理论上,以下哪个代码块会执行得更快:
private var myRegEx:RegExp = /\n/;
private function modify1():void {
myString.split(/\n/);
}
private function modify2():void {
myString.split(myRegEx);
}
Run Code Online (Sandbox Code Playgroud)
modify1()会以与modify2()相同的执行速度运行吗?我的意思是,AS3是否在modify1()中编译了一个新的RegExp实例,因为它没有绑定到实例变量?
非常感激任何的帮助 :)
python ×4
angularjs ×2
aes ×1
binary ×1
docker ×1
encryption ×1
file ×1
hmac ×1
lame ×1
mocking ×1
openssl ×1
pickle ×1
pycrypto ×1
python-2.7 ×1
regex ×1
rust ×1
rust-cargo ×1
unit-testing ×1
vala ×1