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´
这正是我对该脚本的预期输出。
非常感谢大家帮我解决这个问题!
我正在学习 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´
这正是我对该脚本的预期输出。 非常感谢大家帮我解决这个问题!