我有一个文件,其中有几行,从python脚本我逐行读取文件。文件如下:
- Correct reference to JKLR45, fixed file
- Xyz changes being done in file
- Hello welcone
脚本如下:
f =open('change_log.txt', 'r')
first_line = f.readlines()
for i in range(len(first_line )):
print first_line [i]
以上脚本的输出如下:
- Correct reference to JKLR45, fixed file
- Xyz changes being done in file
- Hello welcone
现在我想将此输出传递给其他函数,但我没有得到如何将输出传递给函数。我尝试如下:
def function(*value):
print value
def read_file():
f =open('change_log.txt', 'r')
first_line = f.readlines()
for i in range(len(first_line )):
print first_line [i]
function(*first_line [i])
但我得到函数(*值)的输出如下:
['-','C','o','r','r','e','t'.........]
但是我不希望这种输出超出功能(*值)而我希望它打印出来:
- Correct reference to JKLR45, fixed file
- Xyz changes being done in file
- Hello welcone
那么,请建议如何实现这一目标?
答案 0 :(得分:0)
您可以尝试删除
中的星号def function(*value):
和
function(*first_line [i])
您的示例中不需要。
分割给函数的参数进行处理,并且通常在将传递给函数的参数数量不确定时使用。或者像这样:
def func(a, b, c):
#process
return #anything
x = (arg1, arg2, arg3)
print func(*x)
答案 1 :(得分:0)
不需要*
。这是一个有点改进的版本:
def function(value):
print value,
def read_file():
with open('change_log.txt', 'r') as fobj:
for line in fobj:
function(line)
read_file()
with open()
打开该文件,并承诺在您提出后立即将其关闭。您可以直接在打开的文件对象fobj
上进行迭代。无需range
并使用i
建立索引。使用value
调用该函数。使用*value
表示将行的所有元素作为单独的参数传递给function
。最后,print value,
尾随逗号会抑制来自print
的换行符,因为文件内容中已有一行。
答案 2 :(得分:0)
你应该这样定义,
def function(value):
print value
函数调用总是为上面提到的所有参数赋值 参数列表,来自位置参数,来自关键字 参数,或默认值。如果表单
*identifier
是 目前,它被初始化为接收任何多余位置的元组 参数,默认为空元组。如果表单**identifier
存在,它被初始化为接收任何多余的新词典 关键字参数,默认为新的空字典。