仅读取一行数据的功能

时间:2019-05-15 01:19:01

标签: python

我正在做一个csi python项目。我的字符串函数不会读取文件中的所有数据。仅出现一行,

我在这个网站上进行了搜索。在线访问了不同的站点,并得到了同行的帮助。

...

python
def readData():
    weatherlist = []
    file = open("KMDW.csv","r")
    sheet = file.readline()
    for x in file:
        innerlist = []
        x = x.split(",")
        for y in file:
           innerlist.append(y)
        weatherlist.append(innerlist)
    print(x)
    return x
readData()

...

我希望函数读取所有数据行。但是,返回列表后,我只会显示一行数据。

5 个答案:

答案 0 :(得分:0)

这可行吗?

def readData():
    weatherlist = []
    file = open("KMDW.csv","r")
    sheet = file.readlines()
    for x in sheet:
        innerlist = []
        x = x.split(",")
        for y in x:
           innerlist.append(y)
        weatherlist.append(innerlist)
    print(weatherlist)
    return weatherlist
readData()

答案 1 :(得分:0)

file.readline()一次只能读取一行。将其替换为file.readlines()以读取文件中的所有行。

答案 2 :(得分:0)

欢迎堆栈溢出!

我猜您打算将第一行作为标题行单独读取。然后,您想使用file.readlines()处理其余的行。 readlines()将在行末添加EOL字符,因此您应在每行上执行strip(),以免最后一个元素中没有CR。您的内部循环似乎并没有为您做任何事情,并且在第一次迭代中第二次遍历一个对象也就毫无意义。鉴于此,并且您可能想返回正在建立的weatherlist列表,这是我认为您想要的:

def readData():
    weatherlist = []
    file = open("KMDW.csv","r")
    sheet = file.readline()
    for x in file.readlines():
        x = x.strip().split(",")
        weatherlist.append(x)
    return weatherlist

weatherlist = readData()
print(weatherlist)

如果文件的第一行与其他所有行一样都是数据行,则只需取出sheet = file.readline()行即可。

将来,我建议您发布数据,因为很难知道没有数据就想做什么。通常只包含前3-4行就足够了。

答案 3 :(得分:0)

这里的问题是filegenerator。这意味着您在阅读文件时会耗尽文件的内容。 也就是说,您不能在变量文件上循环两次,而必须再次打开它。

当您像下面那样循环时,将耗尽整个文件生成器。因此,在for x in file的第二次迭代中,没有任何要迭代的结果,因此只能读取一行。

for y in file:
    innerlist.append(y)

答案 4 :(得分:0)

readData函数中,您返回x,在循环结束时它将具有最后一行的值。理想情况下,您应该使用return weatherList返回所有行。

def readData():
    weatherlist = []
    file = open("KMDW.csv","r")
    sheet = file.readline()
    for x in file:
        innerlist = []
        x = x.split(",")
        for y in file:
           innerlist.append(y)
        weatherlist.append(innerlist)
    print(x)
    return weatherList
readData()