关于python中的文件I / O.

时间:2015-05-29 21:33:39

标签: python file-io

我想读取一个txt文件并将其存储为字符串列表。这是我自己想出来的一种方式。它看起来很笨拙。有没有更好的方法来做到这一点?感谢。

import re
import urllib2
import re
import numpy as np
url=('http://quant-econ.net/_downloads/graph1.txt')
response= urllib2.urlopen(url)
txt= response.read()
f=open('graph1.txt','w')
f.write(txt)
f.close()
f=open('graph1.txt','r')
nodes=f.readlines()

我尝试了下面提供的解决方案,但它们实际上都返回了与我之前的代码不同的东西。  这是split()

生成的字符串
    'node0, node1 0.04, node8 11.11, node14 72.21'

这是我的代码生成的

    'node0, node1 0.04, node8 11.11, node14 72.21\n'

问题在于没有' \ n'当我尝试处理字符串列表时,它将面临一些索引错误。  " row = index [0] IndexError:列出索引超出范围"

for node in nodes:
    index = re.findall('(?<=node)\w+',node)
    index = map(int,index)
    row = index[0]
    del index[0]

3 个答案:

答案 0 :(得分:2)

根据documentationresponse已经是类似文件的对象:您应该能够response.readlines()

对于那些你需要创建这样的中间文件的问题,你想使用io.StringIO

答案 1 :(得分:1)

看看split。所以:

nodes = response.read().split("\n")

编辑:或者,如果您想避免使用\r\n换行符,请使用splitlines

nodes = response.read().splitlines()

答案 2 :(得分:0)

尝试:

GET

如果您不想要该文件,则应该可以使用:

url=('http://quant-econ.net/_downloads/graph1.txt')
response= urllib2.urlopen(url)
txt= response.read()
with open('graph1.txt','w') as f:
    f.write(txt)
nodes=txt.split("\n")