我正在尝试将列表映射到十六进制,然后在其他地方使用列表.在python 2.6中,这很简单:
答: Python 2.6:
>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']
Run Code Online (Sandbox Code Playgroud)
但是,在Python 3.1中,上面返回了一个map对象.
B: Python 3.1:
>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>
Run Code Online (Sandbox Code Playgroud)
如何在Python 3.x上检索映射列表(如上面的A中所示)?
或者,有更好的方法吗?我的初始列表对象有大约45个项目,id喜欢将它们转换为十六进制.
我是初学者并且需要构建一个脚本来自动化一些构建任务.
有没有办法只检索最近添加的标签到git仓库?我可以提取所有标签的列表,但似乎无法将其过滤到最新的标签.
这是获取我的git标签的相关代码:
<gittag
repository="${repo.dir.resolved}"
list="true"
outputProperty="versionTag"
pattern="v*" />
Run Code Online (Sandbox Code Playgroud)
上面的输出结果是一个标签列表(前缀为"v"):
[gittag] git-tag output: v1.0.0
v1.0.1
v1.0.2
Run Code Online (Sandbox Code Playgroud)
关于如何将其归结为v1.0.2的任何想法?
出于某种原因,以下似乎在我运行python 2.6的ubuntu机器上运行完美,并在运行python 3.1的windows xp框中返回错误
from socket import socket, AF_INET, SOCK_DGRAM
data = 'UDP Test Data'
port = 12345
hostname = '192.168.0.1'
udp = socket(AF_INET,SOCK_DGRAM)
udp.sendto(data, (hostname, port))
Run Code Online (Sandbox Code Playgroud)
下面是python 3.1抛出的错误:
Traceback (most recent call last):
File "sendto.py", line 6, in <module>
udp.sendto(data, (hostname, port))
TypeError: sendto() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)
我查阅了python 3.1的文档,sendto()只需要两个参数.关于可能导致这种情况的任何想法?
我有一个数字列表,我想作为二进制数据发送到套接字连接.
举个例子,我从以下列表开始:
data = [2,25,0,0,ALPHA,0,23,18,188]
Run Code Online (Sandbox Code Playgroud)
在上面的列表中,ALPHA可以是介于1和999之间的任何值.最初,我将其转换为使用的字符串
hexdata = ''.join([chr(item) for item in data])
Run Code Online (Sandbox Code Playgroud)
因此,如果ALPHA为101,则返回以下字符串:
>>> data = [2,25,0,0,101,0,23,18,188]
>>> hexdata = ''.join([chr(item) for item in data])
>>> hexdata
'\x02\x19\x00\x00e\x00\x17\x12\xbc'
Run Code Online (Sandbox Code Playgroud)
这很好用,'\ x02\x19\x00\x00e\x00\x17\x12\xbc'是我需要发送的字符串.
但是,这对于超过255的ALPHA值不起作用,因为它超出了chr语句的范围.如果例如ALPHA是999,那么我想得到以下字符串:
data = [2,25,0,0,999,0,23,18,188]
hexdata = '\x02\x19\x00\x03\xed\x00\x17\x12\xbc'
Run Code Online (Sandbox Code Playgroud)
我一直在查看struct.pack()上的文档,但看不出如何用它来实现上面的字符串.ALPHA是列表中唯一的变量.
任何帮助将不胜感激.
编辑1
你想要什么行为?256到65535之间的任何内容都需要2个字节来表示.你想在另一边打开它吗?请用你的意图更新帖子. - gahooa 1分钟前
多数民众赞成正确,因为999超过256门槛,它由两个字节表示:
data = [2,25,0,0,999,0,23,18,188]
hexdata = '\x02\x19\x00**\x03\xed**\x00\x17\x12\xbc'
Run Code Online (Sandbox Code Playgroud)
这有意义吗?
就解包而言,我只是将这些数据发送到套接字上,我将接收数据但已经处理好了.
编辑2
我发出的字符串总是固定长度.为简单起见,我认为最好将列表表示如下:
ALPHA = 101
data = [25,alpha1,alpha2,1]
hexdata = '\x19\x00e\x01'
ALPHA = 301
data = [25,alpha1,alpha2,1]
hexdata = 'x19\x01\x2d\x01'
Run Code Online (Sandbox Code Playgroud)
正如您在hexdata字符串中看到的那样,然后变为:\ x01\x2d \
如果ALPHA …
我有2个名为core.less和style.less的LESS CSS文件
core.less位于:\ css\core.less下,其内容如下:
body {
background: @bg_color;
color: @font_color;
}
Run Code Online (Sandbox Code Playgroud)
style.less位于:\ css\green\style.less下,其内容如下:
@bg_color: #0F0;
@font_color: #FFF;
@import "../../core.less";
Run Code Online (Sandbox Code Playgroud)
该core.less文件包含所有CSS规则,在更短的格式,但不提供对变量的定义.
该style.less定义core.less引用的所有变量,然后导入core.less文件.
编译样式没有问题.因为它从核心文件导入所有规则.core.less文件无法编译 - 它将生成错误,因为它不包含变量定义.
我现在也想编译core.css文件(只是为了确保我的LESS规则中没有错误).有没有办法在core.less文件中添加某种虚拟/占位符变量,这样它也可以编译而不会产生错误,仍然可以使用我上面解释过的设置?
我对改变文件格式/结构的建议持开放态度.
我正在编写一个python脚本,充当应用程序和一些外部设备之间的"粘合剂".脚本本身很简单,有三个不同的过程:
但是,这将重复进行,并且对于几个(+/- 200个不同的)设备.因此,一旦它到达设备#200,它将再次开始从设备#001请求数据.我主要担心的是在执行脚本时不要让处理器陷入困境.
更新:我使用三个线程来执行上述操作,每个上述进程使用一个线程.请求/响应是异步的,因为每个响应都包含我需要处理它的所有内容(包括发件人详细信息).
有没有办法允许脚本在后台运行并尽可能少地消耗系统资源?这将在Windows 2003机器上运行.
任何意见,将不胜感激.
python ×4
list ×2
background ×1
binary ×1
build ×1
css ×1
git ×1
less ×1
map-function ×1
performance ×1
phing ×1
process ×1
python-3.x ×1
sendto ×1
string ×1
ubuntu ×1
udp ×1
windows ×1