我不得不在Python中解析syslog消息的Facility和Severity.这些值随每条消息一起出现.事件的严重性为0-7,在整数的3个最低有效位中指定.从数字中评估这3位的最简单/最快的方法是什么?
我现在的代码只是进行3位右移,而不是将该数乘以8,并从原始数据中减去结果.
FAC = (int(PRI) >> 3)
SEV = PRI - (FAC * 8)
Run Code Online (Sandbox Code Playgroud)
必须有一种不那么复杂的方法来做到这一点 - 而不是消除比特和减少.
(我是一个交易系统管理员,所以,我不知道很多基础知识 - 请光临我!)
在交互式python中,有一个'continuation variable',下划线.
>>> import netlib
>>> netdev = netlib.netface('eth1')
>>> if netdev.getIP():
... print _
...
10.80.22.100
>>>
Run Code Online (Sandbox Code Playgroud)
但是在脚本中使用它,它是未定义的,因此失败:
if netdev.getIP(): SetValue('ipaddress', _)
Run Code Online (Sandbox Code Playgroud)
是否有类似的东西或方法为脚本启用此功能?
是否有可能重新定义括号[]使用哪个对象?
我可以子类化该list对象,但是如何让解释器使用我的子类代替buildin列表对象?可能吗?
(我很确定我使用的是错误的条款 - 随意编辑)
>>> class mlist(list):
... def __init__(self):
... list.__init__(self)
... def __getitem__(self, item):
... return list.__getitem__(self, item) * 2
...
>>> testlist = mlist()
>>> testlist.append(21)
>>> testlist[0]
42
>>> list = mlist() # maybe setting the 'list' type will do it?
>>> testlist = []
>>> testlist.append(21)
>>> testlist[0]
21 # Nope
>>>
Run Code Online (Sandbox Code Playgroud)
我没有实际用途 - 只是好奇.
我的作业要求"from"用作命令行输入的参数.
p = optparse.OptionParser()
p.add_option("--from")
p.add_option("--to")
p.add_option("--file", default="carla_coder.ics")
options, arguments = p.parse_args()
print options.from
Run Code Online (Sandbox Code Playgroud)
显然,"from"是一个Python关键字......有什么方法可以解决这个问题吗?基本上,应该使用脚本运行
file.py --from=dd/mm/yyyy --to=dd/mm/yyyy --file=file
我想做一个简单的字符串匹配,从字符串的-front-搜索.是否有更容易的方法来做这个可能内置?(re看起来有点矫枉过正)
def matchStr(ipadr = '10.20.30.40', matchIP = '10.20.'):
if ipadr[0:len(matchIP)] == matchIP: return True
return False
Run Code Online (Sandbox Code Playgroud) 测试一个类是否定义了特定方法的最佳(或'Pythonic')方法是什么?
这两种方法都有效,但感觉不正确,因为在第二种方法中,我只是尝试访问它并捕获异常(如果它不存在).
有更好/更正确的方法吗?
class TestClass(object):
def TestFunc(self):
pass
if 'TestFunc' in dir(TestClass):
print 'yes'
else:
print 'No'
try:
if TestClass.__getattribute__(TestClass, 'TestFunc'):
print 'yes'
except:
print 'No'
Run Code Online (Sandbox Code Playgroud) 我有一个需要图形数据的项目(使用Python).rrdtool似乎几乎完全符合我的要求 - 除了它只支持1秒的分辨率,我的数据点更接近.
GNUPlot看起来像野兽.我还没有挖掘它,但是粗略地看一眼,它似乎更适合于绘制表达式而不是快速学习的东西.
是否有另一个(希望相对容易使用)图形系统量身定制或易于适应图形时间序列?如果没有比GNUplot更好的东西了,我会开始深入研究它 - 我只是想确定没有其他我应该考虑的东西.
有没有简单的方法可以使用Python代码获取git存储库(在GitHub上)版本哈希?我想用它来处理github上我的软件的'dev'版本的版本控制.
我觉得必须有一种更容易(更清晰)的方法来使用理解来解析linux上的meminfo文件.该文件的格式为:
MemTotal: 3045588 kB
MemFree: 1167060 kB
Buffers: 336752 kB
Cached: 721980 kB
SwapCached: 0 kB
Active: 843592 kB
Inactive: 752920 kB
Active(anon): 539968 kB
Inactive(anon): 134472 kB
Run Code Online (Sandbox Code Playgroud)
我试图重写for循环id用于使用理解,发现我需要3个...
def parse_mem_file(memfile = '/proc/meminfo'):
lines = open(memfile, 'r').readlines()
lines = [line.strip('kB\n') for line in lines if line[-3:] == 'kB\n']
lines = [line.split(':') for line in lines]
return dict((key, int(value)) for (key, value) in lines)
print parse_mem_file()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?有没有合理的方法来简化这个?
exit()从功能内部是不好的形式?
def respond_OK():
sys.stdout.write('action=OK\n\n')
sys.stdout.flush() # redundant when followed by exit()
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
而不是exit()从__main__名称空间设置退出代码?
def respond_OK():
global exit_status
sys.stdout.write('action=OK\n\n')
sys.stdout.flush()
exit_status = 0
sys.exit(exit_status)
Run Code Online (Sandbox Code Playgroud)
从功能的角度来看,这种差异可以忽略不计,只是想知道形式上的共识是什么.如果你在其他人的代码中找到了先前的代码,你会看两次吗?
我正在为我的Python课程编写信用卡付款计算器.分配是为计算器编写一个定义,计算出每月支付的费用,以便在x个月内将余额归零.
该定义有3个参数:initialBalance,apr,months.
尽管我可以想象,分配的目的是让我们使用二分法来找到答案,并且我写了另外两个有助于赋值的定义:
1)newBalance() - 确定付款后的新余额; 2)余额() - 在付款后返回余额清单;
在这种情况下,balances()[ - 1]返回最终余额,所以我的行动计划是将列表中的最后一项评估为等于0(或至少在0的0.005之内!)如果是,则返回付款让我在那里.
如果最终余额是负数(我付了太多钱!):付款=付款 - (付款/ 2); 如果余额是正数(我没有足够的支付!):付款=付款+(付款/ 2);
尽我所能,我的算法应该最终得出结论,但它永远找不到足够接近的答案......
这是我的代码,(以及教授在最后的测试def):
def newBalance(prevBalance, apr, payment):
"""
- prevBalance: the balance on the credit card statement.
- apr: the annual percentage rate (15.9 here means 15.9%).
- payment: the amount paid this month to the credit card company.
- returns: the new balance that will be owed on the credit card
(assumes no purchases are made).
"""
interestCharge = float(((apr / 12.0) …Run Code Online (Sandbox Code Playgroud) using namespace std;
class Counter
{
int val;
public:
Counter() { val = 0; }
int Next() { return ++val; }
};
int main()
{
Counter counter;
while (int c = counter.Next() <= 5)
{
cout << c << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
运行时,程序打印15 次。因此,.Next()当 while 循环终止时返回预期值。
为什么remain的值c设置为初始值?
我对 C++非常陌生(这是我编写的第一个 C++ 程序),我只是想了解 的返回值如何.Next()按预期进行评估,但未在c变量中捕获。
比较这些时,您认为哪种更直观/更容易阅读?
>>> [ord(i) for i in 'some string']
[115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]
>>> map(ord,'some string')
[115, 111, 109, 101, 32, 115, 116, 114, 105, 110, 103]
Run Code Online (Sandbox Code Playgroud)
lambda/map方式有什么好处吗?