python - 从 python 中的“请求”模块写入文件时添加不必要的字符
问题描述
我有一个由每行 URL 组成的文本文件,如下所示:
https://www.google.com
https://www.facebook.com
https://www.gmail.com
我使用以下脚本:
import requests
add = open("manual_list.txt","r")
for a in add:
response = requests.get(a, timeout=(2, 5), verify=False)
fout = open("mylist.txt","a")
fout.write(response.url+"\n")
fout.close()
问题是,当我将生成的 URL 写入文件时,我会%0A
在每一行的末尾得到附加信息。你能向我解释为什么会这样吗?
可以通过向strip
输入添加函数来解决该问题:
response = requests.get(add.strip(), timeout=(2, 5), verify=False)
我的问题:
1)我不明白为什么需要这样做?
2) 搜索about %0A
,变成换行符。这与换行符不同。你能解释一下它是如何添加的吗?是我名单的错还是图书馆的错?
我在其他程序中使用了相同的列表,我似乎没有类似的问题。为什么这里有问题?是图书馆的错吗?还是列表的错?
编辑:我使用 Ubuntu 18.04 和 python 3.6.5
解决方案
requests.get(add, timeout=(2, 5), verify=False)
应该是
requests.get(a, timeout=(2, 5), verify=False)
你能用那个改变再试一次吗?
编辑:
with open("url_list.txt","r") as f:
content = f.readlines()
print(content)
将打印出来
['https://www.google.com\n', 'https://www.facebook.com\n', 'https://www.gmail.com\n']
在这里你可以看到你的文件中的行确实有一个'\n',这是正常的它只是告诉程序应该从哪里开始一个新的行。这就是为什么你需要一个 .strip()
推荐阅读
- javascript - 如何将 Express.js 与 webpack 一起使用?
- c# - C# Moq - 有没有办法只模拟基本方法而不模拟它的覆盖版本?
- c# - Datagridview 布尔列条件
- autohotkey - 我的 AHK 脚本运行并将击键发送到一个程序不适用于另一个程序
- java - JTable AutoScrolling 类似 IntelliJ 控制台
- typescript - 如何将 ABI 接口映射到 Typescript 中的函数对象?
- sql - 如何强制 LEFT OUTER JOIN 返回 NULL 或空?
- html - 如何使用 nth-child 更改每隔一个 wordpress 帖子的位置?
- python - 使用 python3 发送一封简单的电子邮件
- rust - 如何从常量函数内部打印中间值以进行调试?