0

我在 Python 等效项中搜索以下 Bash 代码:

VAR=$(echo $VAR)

伪 Python 代码可能是:

var = print var

你能帮我吗?:-)

问候

编辑:

我寻找一种方法来做到这一点:

for dhIP in open('dh-ips.txt', 'r'):
    gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
    print gi.country_code_by_addr(print dhIP) # <-- this line is my problem

在 Bash 我会这样做:

print gi.country_code_by_addr($(dhIP)) # 只有伪代码...

希望现在更清楚了。

编辑2:

谢谢你们!这是我的解决方案。感谢 Liquid_Fire 对换行符的评论,并感谢 hop 的代码!

import GeoIP

fp = open('dh-ips.txt', 'r')
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)

try:
    for dhIP in fp:
        print gi.country_code_by_addr(dhIP.rstrip("\n"))
finally:
    fp.close()
4

4 回答 4

3

您不需要 a print,只需使用变量的名称:

for dhIP in open('dh-ips.txt', 'r'):
    gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
    print gi.country_code_by_addr(dhIP)

另请注意,遍历文件对象会为您提供最后带有换行符的行。您可能希望dhIP.rstrip("\n")在将其传递给country_code_by_addr.

于 2011-09-29T17:46:59.567 回答
2

dhIP照原样使用。没有必要对它做任何特别的事情:

for dhIP in open('dh-ips.txt', 'r'):
    gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
    print gi.country_code_by_addr(dhIP)

注意:您的代码还有其他一些问题。

在不熟悉您使用的库的情况下,在我看来,您在循环的每次迭代中都不必要地实例化了 GeoIP。此外,您不应丢弃文件句柄,以便之后关闭文件。

fp = open('dh-ips.txt', 'r')
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)

try:
    for dhIP in fp:
        print gi.country_code_by_addr(dhIP)
finally:
    fp.close()

或者,更好的是,在 2.5 及更高版本中,您可以使用上下文管理器:

with open('dh-ips.txt', 'r') as fp:
    gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
    for dhIP in fp:
        print gi.country_code_by_addr(dhIP)
于 2011-09-29T17:51:23.243 回答
1

您可能想尝试以下功能:

字符串(变量)

代表(变量)

于 2011-09-29T17:26:33.057 回答
0

如果您只是尝试将值重新分配给相同的名称,它将是:

var = var

现在,如果您尝试分配所引用的任何对象的字符串表示形式(通常是print返回值)var

var = str(var)

这就是你所追求的吗?

于 2011-09-29T17:25:14.913 回答