2011-09-29 100 views
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我會做這樣的:

打印gi.country_code_by_addr ($(dhIP))#只有僞代碼...

希望現在更清楚。

編輯2:

謝謝大家!這是我的解決方案。感謝Liquid_Fire提供的換行符,並感謝跳轉代碼!

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

你怎麼_actually_想幹什麼? – hop

+0

你認爲bash代碼的作用是什麼?例如:'VAR =「 - e」'或'VAR =「a b」'(我不知道如何格式化多個空格)。你真的想做什麼? –

+0

您是否嘗試將命令行程序的輸出分配給變量?或者可能獲取環境變量的值? –

回答

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) 
+0

謝謝!與rstrip(「\ n」)一起使用就像一個魅力! :-) – fwaechter

0

如果你只是想重新分配一個值,以相同的名稱將是:

var = var 

現在,如果你想指定字符串表示(通常是什麼print回報)無論對象是由var簡稱:

var = str(var) 

是你以後在做什麼?

1

你可能想嘗試這些功能:

STR(VAR)

再版(VAR)

3

你不需要在那裏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

+0

rstrip(「\ n」)是必需的!我將你的評論與來自跳碼的代碼一起使用,現在它可以工作。非常感謝你。 – fwaechter