Python IF语句的行为相反

Python IF语句的行为相反,python,python-3.x,urllib,Python,Python 3.x,Urllib,我已经写了一个小脚本,用下面的格式扫描文本文件 然后,仅当存在重定向时,才输出带有重定向URL的不同文本文件。否则,我想打印“无重定向”。但出于某种原因,情况恰恰相反 下面是我的代码,你能解释一下我做错了什么吗 import urllib.request inc_input = input("Please enter the file name\n") file_name = open(inc_input) f = open('output.txt', 'w') for line in fi

我已经写了一个小脚本,用下面的格式扫描文本文件

然后,仅当存在重定向时,才输出带有重定向URL的不同文本文件。否则,我想打印“无重定向”。但出于某种原因,情况恰恰相反

下面是我的代码,你能解释一下我做错了什么吗

import urllib.request

inc_input = input("Please enter the file name\n")
file_name = open(inc_input)
f = open('output.txt', 'w')
for line in file_name:
    eachurl = line.strip()
    redirected = urllib.request.urlopen(eachurl)
    finalurl = redirected.geturl()

    if eachurl == finalurl:
        f.write(eachurl + "\t" + finalurl + "\n")
    else:
        f.write(eachurl + "\t" + "No redirection" + "\n")
f.close()

您的逻辑似乎与您的预期相反,我添加了一些评论以澄清:

if eachurl == finalurl:
    # no redirection happened since we're in the original url (==)
    f.write(eachurl + "\t" + finalurl + "\n")
else:
    # redirection happened, different url
    f.write(eachurl + "\t" + "No redirection" + "\n")

使用
not
可反转状况或反转车身。目前,该信息具有误导性。

您的逻辑似乎与您的预期相反,我添加了一些评论以澄清:

if eachurl == finalurl:
    # no redirection happened since we're in the original url (==)
    f.write(eachurl + "\t" + finalurl + "\n")
else:
    # redirection happened, different url
    f.write(eachurl + "\t" + "No redirection" + "\n")

使用
not
可反转状况或反转车身。目前,该消息具有误导性。

如果您将测试文本作为纯文本包含,则我们可以测试您的代码。您能否在测试前打印
eachull
finalurl
strip()
很有用,但可能还有其他问题。你可以试着打印每一个chull和finalur,你就会找到答案。你的代码中的逻辑是错误的。如果
eachull
finalurl
不同,您可以打印
“无重定向”
。如果您将测试文本包含为纯文本,则我们可以测试您的代码。您可以在测试前打印
eachull
finalurl
strip()
很有用,但可能还有其他问题。你可以试着打印每一个chull和finalur,你就会找到答案。你的代码中的逻辑是错误的。如果
eachull
finalurl
不同,则打印
“无重定向”
。如果您想这样写
if
,则使用
eachull!=最终结果
。事实上,我第一次读你的答案时,我甚至没有看到
而不是
,并且感到困惑!但即便如此,我认为最好交换这两个子句,而不是在包含
else
子句的
if
语句中进行否定比较。如果你想这样写
if
,那么使用
eachull!=最终结果
。事实上,我第一次读你的答案时,我甚至没有看到
而不是
,并且感到困惑!但即便如此,我认为最好交换这两个子句,而不是在包含
else
子句的
if
语句中进行否定比较。或者
=而不是
=
=而不是
==