2012-08-31 34 views
0

看到這個代碼是否從與硬編碼字符串不同的文件讀取變量?

PROXY_HOST, PROXY_PORT = choice(proxies).rstrip().split(":") 

fp = webdriver.FirefoxProfile() 

# Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5 
fp.set_preference("network.proxy.type", 1) 

fp.set_preference("network.proxy.http", PROXY_HOST) 
fp.set_preference("network.proxy.http_port", PROXY_PORT) 
fp.set_preference("network.proxy.ftp", PROXY_HOST) 
fp.set_preference("network.proxy.ftp_port", PROXY_PORT) 
fp.set_preference("network.proxy.ssl", PROXY_HOST) 
fp.set_preference("network.proxy.ssl_port", PROXY_PORT) 

代理是代理的形式123.123.123.123:1234\n列表。奇怪的是,如果我硬編碼兩個變量PROXY_HOSTPROXY_PORT它將使用代理服務器,如果我嘗試從我做這樣的

with open("proxies.txt") as f: 
    proxies = f.readlines() 

代理設置被忽略文件中讀取它。如果我打印兩個增值稅,他們是正確的,但沒有使用。

所以有什麼我不明白,它是如何不同的硬編碼的IP和端口或從文件/列表中讀取它。

+0

你將它們硬編碼到什麼地方,以及文件的示例內容是什麼? –

+2

如果你從文件中讀取這個列表,那麼這個列表是硬編碼還是'代理',請向我們展示'proxies'。最好的辦法是用'repr()'打印兩個變量。 –

+0

我真的不明白你的意思,但我認爲你在閱讀文件時遇到問題,因爲可能每個文件行的最後一個字符都是\ n,或者類似的東西。問候, –

回答

1

這是一個如何做,我正確的調試問題。如果這個列表是硬編碼的,請仔細查看proxies,如果您從文件中讀取,則請proxies。最好的辦法是使用repr()打印這兩個變量。你會看到不同之處。解決方案將非常簡單:從文件讀取端口後,它仍然是一個字符串,需要轉換爲整數。當你對它進行硬編碼時,你首先將它定義爲一個整數。

+0

你應該在這個答案中發佈實際結果(即代理端口是一個字符串,但它已被硬編碼爲整數) –

+0

整個「線程」結果奇怪。我更新了答案。 –

1

readlines保留每行的行尾字符。如果端口設置爲,例如,這可能導致代理設置靜靜失敗。 "1234\n"

+0

我試圖擺脫這個問題使用rstrip(),但也許還有更多,我沒有看到。我會研究它 – rootman

+1

@rootman:正如其他人所建議的那樣,您需要準確告訴我們您的硬編碼變量以及文件內容。 – BrenBarn

相關問題