2012-08-31 38 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

相关问题