Python эквивалент Bash $ () - PullRequest
       0

Python эквивалент Bash $ ()

0 голосов
/ 29 сентября 2011

Я ищу в эквиваленте 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)) # только псевдокод ...

Надеюсь, теперь стало понятнее.

Edit2:

Спасибовы все!Вот мое решение, которое работает.Спасибо 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 ]

3 голосов
/ 29 сентября 2011

Вам не нужно 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.

2 голосов
/ 29 сентября 2011

Просто используйте 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)
1 голос
/ 29 сентября 2011

Возможно, вы захотите попробовать эти функции:

str (var)

repr (var)

0 голосов
/ 29 сентября 2011

Если вы просто пытаетесь переназначить значение тому же имени, оно будет:

var = var

Теперь, если вы пытаетесь назначить строковое представление (которое обычно возвращает print) любого объекта, на который ссылается var:

var = str(var)

Это то, что вы ищете?

...