python从Web URL读取文件

时间:2015-10-06 13:50:03

标签: python urllib readfile

我目前正在尝试从网站上读取txt文件。

到目前为止我的脚本是:

webFile = urllib.urlopen(currURL)

这样,我可以使用该文件。但是,当我尝试存储文件(在webFile中)时,我只获得了一个指向套接字的链接。我尝试的另一个解决方案是使用read()

webFile = urllib.urlopen(currURL).read()

然而,这似乎删除了格式化(\n\t等)被删除。

如果我打开这样的文件:

 webFile = urllib.urlopen(currURL)

我可以逐行阅读:

for line in webFile:
    print line

这将导致:

"this" 
"is" 
"a"
"textfile"

但我明白了:

't'
'h'
'i'
...

我希望在我的计算机上获取该文件,但同时保留该格式。

4 个答案:

答案 0 :(得分:6)

您应该使用readlines()来读取整行:

response = urllib.urlopen(currURL)
lines = response.readlines()
for line in lines:
    .
    .

但是,我强烈建议您使用requests库。 点击此处here

答案 1 :(得分:0)

这是因为你迭代了一个字符串。这将导致角色打印的特征。

为什么不立刻保存整个文件?

import urllib
webf = urllib.urlopen('http://stackoverflow.com/questions/32971752/python-read-file-from-web-site-url')
txt = webf.read()

f = open('destination.txt', 'w+')
f.write(txt)
f.close()

如果你真的想循环遍历文件行以使用行txt = webf.readlines()并迭代它。

答案 2 :(得分:0)

如果您只是尝试将远程文件作为python脚本的一部分保存到本地服务器,则可以使用PycURL库下载并保存它而无需解析它。更多信息 - http://pycurl.sourceforge.net

或者,如果你想读取然后写输出,我认为你的方法不完整。请尝试以下方法:

# Assign the open file to a variable
webFile = urllib.urlopen(currURL)

# Read the file contents to a variable
file_contents = webFile.read()
print(file_contents)

> This will be the file contents

# Then write to a new local file
f = open('local file.txt', 'w')
f.write(file_contents)

如果两者都不适用,请更新问题以澄清。

答案 3 :(得分:0)

您可以直接下载文件并使用您喜欢的名称进行保存。之后,您可以读取该文件,稍后如果您不再需要该文件,您可以将其删除。

!pip install wget

import wget 
url = "https://raw.githubusercontent.com/apache/commons-validator/master/src/example/org/apache/commons/validator/example/ValidateExample.java" 
wget.download(url, 'myFile.java')