【问题标题】:Is a variable read from a file different from a hardcoded string?从文件中读取的变量是否与硬编码字符串不同?
【发布时间】:2012-08-31 14:31:36
【问题描述】:

查看此代码

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 和端口或从文件/列表中读取它有什么不同。

【问题讨论】:

  • 我不太明白你的意思,但我想你在读取文件时遇到问题,因为每个文件行的最后一个字符可能是 \n 或类似的东西。问候,
  • 你将它们硬编码成什么,文件的示例内容是什么?
  • 请告诉我们proxies 以防此列表是硬编码的,proxies 以防您从文件中读取。最好是使用repr() 打印两个变量。
  • 我所说的硬编码的意思是:PROXY_HOST = "123.123.123.123",端口也是如此。给我一分钟,我会发布更多信息
  • 好的 - @Jan-PhilipGehrcke 向我指出了解决方案,非常感谢:代理端口读取后是一个字符串,我只需将其转换为整数

标签: python selenium proxy


【解决方案1】:

这是一个如何正确调试的问题。如果此列表是硬编码的,请查看proxies,如果您从文件中读取它,请查看proxies。最好是使用repr() 打印两个变量。你会看到不同。解决方法很简单:从文件中读取端口后,仍然是字符串,需要转换为整数。硬编码时,首先将其定义为整数。

【讨论】:

  • 您应该在此答案中发布实际结果(代理端口是一个字符串,但它已被硬编码为整数)
  • 整个“线程”变得很奇怪。我更新了答案。
【解决方案2】:

readlines 保留每一行的行尾字符。如果端口设置为,这可能会导致代理设置静默失败,例如"1234\n".

【讨论】:

  • 我尝试使用 rstrip() 来解决这个问题,但也许还有更多我看不到的问题。我会调查的
  • @rootman:正如其他人所建议的那样,您需要向我们准确地展示硬编码的变量以及文件的内容。
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2018-06-27
相关资源
最近更新 更多