python循环赢了';不要在第二遍重复

python循环赢了';不要在第二遍重复,python,csv,Python,Csv,在Python空闲Shell中运行以下命令时: f = open(r"H:\Test\test.csv", "rb") for line in f: print line #this works fine 但是,当我再次运行以下命令时: for line in f: print line #this does nothing 这不起作用,因为您第一次已经查找到文件的末尾。您需要倒带(使用.seek(0))或重新打开文件 其他一些要点: Python有一个非常好

在Python空闲Shell中运行以下命令时:

f = open(r"H:\Test\test.csv", "rb")
for line in f:
    print line
    #this works fine
但是,当我再次运行以下命令时:

for line in f:
    print line
    #this does nothing

这不起作用,因为您第一次已经查找到文件的末尾。您需要倒带(使用
.seek(0)
)或重新打开文件

其他一些要点:

  • Python有一个非常好的模块。除非作为教育练习,否则不要尝试自己实现CSV解析
  • 您可能希望以
    'rU'
    模式打开文件,而不是
    'rb'
    <代码>'rU'是通用换行模式,它将为您处理来自具有不同行尾的平台的源文件
  • 使用文件对象时,请将
    一起使用,因为即使出现错误,它也会为您清理句柄。例:

  • 这不起作用,因为您第一次已经查找到文件的末尾。您需要倒带(使用
    .seek(0)
    )或重新打开文件

    其他一些要点:

  • Python有一个非常好的模块。除非作为教育练习,否则不要尝试自己实现CSV解析
  • 您可能希望以
    'rU'
    模式打开文件,而不是
    'rb'
    <代码>'rU'是通用换行模式,它将为您处理来自具有不同行尾的平台的源文件
  • 使用文件对象时,请将
    一起使用,因为即使出现错误,它也会为您清理句柄。例:

  • 因为您已经遍历了CSV文件,迭代器已经耗尽。您需要在第二次循环之前重新打开它。

    因为您已经遍历了CSV文件,迭代器已经耗尽。您需要在第二次循环之前重新打开它。

    您可以从文件中读取变量中的数据,然后您可以在脚本中重复此数据任意次数。这比来回执行
    seek
    要好

    f = open(r"H:\Test\test.csv", "rb")
    data = f.readlines()
    for line in data:
            print line
    
    for line in data:
            print line
    
    输出:

    # This is test.csv
    
    Line1,This is line 1, there are, some numbers here,321423423
    
    Line2,This is line2 , there are some characters here,sdfdsfdsf
    
    # This is test.csv
    
    Line1,This is line 1, there are, some numbers here,321423423
    
    Line2,This is line2 , there are some characters here,sdfdsfdsf
    

    您可以从变量中的文件中读取数据,然后可以在脚本中对该数据进行任意次数的迭代。这比来回执行
    seek
    要好

    f = open(r"H:\Test\test.csv", "rb")
    data = f.readlines()
    for line in data:
            print line
    
    for line in data:
            print line
    
    输出:

    # This is test.csv
    
    Line1,This is line 1, there are, some numbers here,321423423
    
    Line2,This is line2 , there are some characters here,sdfdsfdsf
    
    # This is test.csv
    
    Line1,This is line 1, there are, some numbers here,321423423
    
    Line2,This is line2 , there are some characters here,sdfdsfdsf
    

    ..使用seek(0)是另一种选择,应该具有较少的开销(不显著)并避免读/写并发潜在问题。使用seek(0)是另一种选择,应该具有较少的开销(不显著)并避免读/写并发潜在问题。关于使用csv模块读取文件,这一点很好。它还允许我使用列表索引,这是我所需要的。是否有类似的列表重置功能?我遇到了一个类似的情况,我打印列表中的项目,它第一次工作,但是我输入相同的代码,它什么也不打印。我必须删除列表并重新创建它。我正在使用python空闲shell,如果matters@wannabe_n00b请在单独的问题中提问并显示您的代码。使用csv模块读取文件的要点很好。它还允许我使用列表索引,这是我所需要的。是否有类似的列表重置功能?我遇到了一个类似的情况,我打印列表中的项目,它第一次工作,但是我输入相同的代码,它什么也不打印。我必须删除列表并重新创建它。我正在使用python空闲shell,如果matters@wannabe_n00b请在单独的问题中提问并显示您的代码。这取决于您正在加载的CSV。通常,当我们处理来自客户的CSV文件时,它们的大小是多GB。一个
    seek(0)
    与将其全部加载到内存相比非常便宜。这取决于您正在加载的CSV。通常,当我们处理来自客户的CSV文件时,它们的大小是多GB。一个
    seek(0)
    与将其全部加载到内存相比非常便宜。