小编Rau*_*fle的帖子

将Python'print'输出重定向到Logger

我有一个Python脚本,它使用'Print'打印到stdout.我最近通过Python Logger添加了日志记录,并希望如果启用了日志记录,这些打印语句将转到logger.我不想修改或删除这些打印语句.

我可以通过'log.info("some info msg")'来记录.我希望能够做到这样的事情:

if logging_enabled:
  sys.stdout=log.info
print("test")
Run Code Online (Sandbox Code Playgroud)

如果启用了日志记录,则应记录"test",就像我执行log.info("test")一样.如果未启用日志记录,则只应将"test"打印到屏幕上.

这可能吗?我知道我可以以类似的方式将stdout指向文件(请参阅:重定向打印到日志文件)

python logging stdout

25
推荐指数
4
解决办法
4万
查看次数

在一个'if'语句中评估多个变量?

假设我有一堆变量,或者是.True或者False.我想在一个if语句中评估一组这些变量,看看它们是否都是False这样的:

if var1, var2, var3, var4 == False:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

除此之外不起作用.我知道我可以这样做:

if var1 == False and var2 == False and var3 == False and var4 == False:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

但这很难看 - 特别是如果这些if语句在我的代码中会发生很多.有没有什么方法可以使用更清晰的语法进行此评估(如第一个示例)?

python if-statement

15
推荐指数
2
解决办法
5万
查看次数

在Python IDLE中,'打印'变量和只写变量之间的区别是什么?

在IDLE解释器中,我使用dpkt执行以下操作:

for ts, buf in pcap:
  eth = dpkt.ethernet.Ethernet(buf)
Run Code Online (Sandbox Code Playgroud)

现在,当我试图看到'eth'的内容时,我可以打印它,或者只是写变量名.

当我做:

print eth
Run Code Online (Sandbox Code Playgroud)

我明白了:

O&áÿE(r @,òÀ¨
DYP?Jò}PªpÉ
Run Code Online (Sandbox Code Playgroud)

但是,当我简单地写:

eth
Run Code Online (Sandbox Code Playgroud)

我得到了更多的预期输出:

Ethernet(src='<removed>', dst='<removed>', data=IP(src='<removed>', off=16384, dst='<removed>', sum=11506, len=40, p=6, ttl=128, id=29344, data=TCP(seq=2527752393, ack=218580057, win=16202, sum=62077, flags=16, dport=80, sport=51626)))
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,做一个"打印(变量)"和写变量名之间的根本区别是什么?如果我做一个简单的赋值(即"x = 100"),我将得到"100"的结果"print x"和"x"

python printing variables python-idle

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

根据整数评估字符串(Python)

可能重复:
Python如何比较字符串和int?

我有一个Python脚本没有按预期评估两个值.该值'10'被确定为大于200.问题是保持'10'值的变量实际上是一个字符串而不是整数(而是200一个整数).

我的问题是:

在针对整数计算字符串时,Python经历了什么过程?它是如何进行比较的?

例如:

string="10"
int=200
if string >= int:
  print("String is greater")
else:
  print("Int is greater")
Run Code Online (Sandbox Code Playgroud)

输出:

String is greater
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我本以为Python在尝试比较两种类型时会退出并出错.

python string variables evaluation integer

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