在Python3.4中,readline单独工作很好,但在';具有开放式';环为什么?

在Python3.4中,readline单独工作很好,但在';具有开放式';环为什么?,python,file,io,with-statement,Python,File,Io,With Statement,在open中添加参数,如'r'、'ignore'、编码等,并没有什么区别 它也发生在其他输入文件上,因此它不是特定于输入的 即使循环中没有停顿,它也会死掉 在第一行之后,它打印该行和暂停消息, 读到第二行就死了 这可能是真正的编译器错误吗?您需要添加一个循环来迭代行: infile = 'xyz.txt' f = open(infile) line = f.readline() # these lines are all read fine print("line=",line) line

在open中添加参数,如'r'、'ignore'、编码等,并没有什么区别

它也发生在其他输入文件上,因此它不是特定于输入的

即使循环中没有停顿,它也会死掉

在第一行之后,它打印该行和暂停消息, 读到第二行就死了


这可能是真正的编译器错误吗?

您需要添加一个循环来迭代行:

infile = 'xyz.txt'

f = open(infile)
line = f.readline() # these lines are all read fine 
print("line=",line)
line = f.readline()
print("line=",line)
line = f.readline()
print("line=",line)
pause()
f.close()

with open(infile) as f: 
    line = f.readline() # this reads the first line but
    print("line=",line) # dies without a message on line 2
    pause()
sys.exit

def pause():
    c = input("\nEnter q to quit, anything else to continue\n") 
    if (c.lower()=='q'): sys.exit()
    return (c)
导入系统 def pause(): c=输入(“\n输入q以退出,其他任何内容以继续”) 如果c.lower()=='q': sys.exit()
infle='ttest.csv'#首先,
with
(在本例中,
with open
)不是循环,
with
是语句(签出:),请尝试以下操作:

import sys

def pause():
    c = input("\nEnter q to quit, anything else to continue") 
    if c.lower() == 'q': 
        sys.exit()

infile = 'ttest.csv'    #  <-- replace with your own file

with open(infile) as f: 
    for line in f:
        print('line = ', line)
        pause()
如果你问错了问题,readline也可以与“with open”配合使用


您的标题是“在Python3.4中,readline单独工作很好,但在‘打开’循环中消亡。为什么?”如上所述,
with
不是循环

没有循环。。。什么意思?你期望它像一个循环吗?
with open
不是一个循环,
with
是一个语句作为旁注,
sys.exit
除非你调用它,否则不会做任何事情。另外,“死”在这里是什么意思?到底发生了什么?它只是在没有消息的情况下退出吗?提出一个例外?赛格断层?而且没有任何代码可以读取第二行,那么这种死亡到底发生在哪里呢?不建议
readlines
在没有它的情况下工作得很好的代码上可能重复;只需对f中的行执行
。没有理由将整个文件读入内存并建立一个列表。
import sys
infile = 'xyz.txt'
def pause():
    c = input("\nEnter q to quit, anything else to continue\n") 
    return c
with open(infile,'r') as f:
    for line in f:
      print("Current line:",line)
      d={'q':sys.exit}
      d.get(pause().lower(), lambda: '')()
sys.exit()