Python.readline()

Python .readline()

我正在学习 Python 使用 Power Shell 和 NotePad++ 的困难方法。

我已经到了使用 .readline() 的部分,我注意到函数中第一个参数的第一个字符被删除或被 space 覆盖。我知道已经有一个问题似乎可以回答这个问题 (Python .readline()) 但由于我对 Python 和 Powershell 完全陌生,我不知道如何 fiddle 周围和改变两者中任何一个的设置。

我写的执行脚本(称为new 1.py)是这样的:

from sys import argv
script, input_filename = argv

def foo (arg1,arg2,arg3):
    print arg1,arg2,arg3.readline()

def bar (arg1, arg2, arg3):
    print arg2,arg1,arg3.readline()

open_input_file=open(input_filename)

foo ("Text1",1,open_input_file)
foo ("Text2",2,open_input_file)
bar ("Text3",3,open_input_file)
bar ("Text4","4",open_input_file)

test1.py 文件包含文本:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6

我的输出如下:

$ python "new 1.py" test1.py
ext1 1 ☐ Line 1
ext2 2  Line 2
  Text3  Line 3
  Text4  Line 4

我期望的输出是:

$ python "new 1.py" test1.py
Text1 1  Line 1
Text2 2  Line 2
3 Text3  Line 3
4 Text4  Line 4

有人可以解释一下如何让 .readline() 阅读该行而不擦除或覆盖第一个字符(使用 space)吗?还有为什么输出的大写L前面有一个白框?

readline() 输出始终包含行尾字符。您可以使用 repr() 函数查看它们:

print repr(bl.readline())

在大多数情况下,您想剥离它们:

bl.readline().rstrip('\r\n')

如果您不关心该行 beginning/end 处的常规空格,您可以将其简化为:

bl.readline().strip()

方法 readline() 从文件中读取一整行。尾随的换行符保留在字符串中。 您不必将 readline 放置两次。如果您将其放入,那么您将得到类似 line2、line4、line6 的结果和传递的 arg3 的空字符串。

为定义的方法尝试以下代码。

def foo (arg1,arg2,arg3):
    print arg1,arg2,arg3.readline().rstrip("\n")

def bar (arg1, arg2, arg3):
    print arg2,arg1,arg3.readline().rstrip("\n")

根据 theamk、jonrsharpe、Martijn Pieters 和 Nitu 的建议,我尝试了以下脚本:

from sys import argv
script, input_filename = argv

def foo (arg1,arg2,arg3):
    print arg1,arg2,arg3.readline().strip("\r\n")

def bar (arg1, arg2, arg3):
    print arg2,arg1,repr(arg3.readline().strip("\r\n"))

open_input_file=open(input_filename)

foo ("Text1",1,open_input_file)
foo ("Text2",2,open_input_file)
bar ("Text3",3,open_input_file)
bar ("Text4","4",open_input_file)

并写了一个新的 test2.py 文件,其中包含与 'test1.py' 文件中相同的文本,但这次我手动输入了所有六行(而不是从以前的文件)

我现在的输出如下:

$ python "new 1.py" test2.py
Text1 1  Line 1
Text2 2  Line 2
3 Text3  ´Line 3´
4 Text4  ´Line 4´

这正是我对该脚本的预期输出。 非常感谢大家帮我解决这个问题!