Python脚本逐行读取文本文件执行问题求助:需逐行执行而非一次性输出
解决逐行处理文本文件的问题
嘿,我来帮你搞定这个问题!你的代码现在一次性输出所有内容,核心问题出在文件读取和循环的方式上——咱们一步步来修正:
原代码的问题点
你用了f.read()把整个文件一次性读成了一个完整的字符串,之后for x in file其实是在逐个遍历字符串里的每个字符,而不是你想要的逐行处理。另外print(x, file.strip())里的file.strip()是对整个文件内容做首尾空白去除,这显然不是你要的效果~
修正后的代码
推荐用Python的with语句来管理文件(它会自动帮你关闭文件,避免资源泄漏),然后直接遍历文件对象来逐行读取:
# 用with语句安全打开文件,自动处理关闭 with open('textfile.txt', 'r', encoding='utf-8') as f: # 直接遍历文件对象,每次迭代得到一行内容 for line in f: # 去掉每行首尾的空白(比如换行符),如果需要保留换行可以去掉.strip() cleaned_line = line.strip() # 打印处理后的行 print(cleaned_line) # 写入串口,注意编码 comSerialPort.write(cleaned_line.encode('utf-8')) # 如果需要在每行处理后加个间隔(比如串口需要换行符),可以加上: # comSerialPort.write(b'\n')
关键细节解释
with open(...) as f:这是Python处理文件的最佳实践,不用手动调用f.close(),代码块结束后自动关闭文件。for line in f:文件对象本身是可迭代的,每次循环会读取一行内容,自带换行符(\n),所以用strip()可以去掉首尾的空白和换行。- 如果你需要保留原行的换行符,直接用
line而不是cleaned_line就行,比如print(line, end='')来避免重复打印换行。
这样修改后,脚本就会逐行读取文件内容,处理完一行再执行下一行啦!
内容的提问来源于stack exchange,提问作者Joe Hunter
相关产品推荐
相关产品推荐

