我正在尝试将从一个功能(读取)接收的数据传输到另一个功能(写入)。 应该将file.txt中的现有数据转换为json格式并打印到控制台,然后通过第二个功能将这些数据获取并写入名为pfile.txt的文件中。 我只是不能让他们一起工作。在普通外壳中将每个功能作为命令分别运行时,它们可以工作;结合起来,没有那么多。我在这里想念什么?
def reading():
filename = 'file.txt'
with open(filename, 'r') as f:
print(json.loads(f.read()))
reading()
def writing():
with open('pfile.txt', 'w+') as pf:
pf.write(reading() in writing()) <-- this doesn't work
pf.write('hello SO') <-- this does work
writing()
答案 0 :(得分:2)
当您引用带有一对括号的函数时,Python将不带任何参数地调用该函数并解析其返回值(如果有)。这不是重击;函数通过内存中的变量将数据彼此传递,而不是通过stdin / stdout。
您编写的代码似乎充满了无限循环(函数调用自身),并且可能会因“超出递归深度”错误而崩溃。可以通过不调用自身内部的函数(或具有相互调用的函数循环)来解决这些问题。
编写的代码没有什么需要多个功能。我将使用1种功能:
def read_and_write():
filename = 'file.txt'
with open(filename, 'r') as f:
content = json.loads(f.read())
print(content)
with open('pfile.txt', 'w+') as pf:
pf.write(content)
如果需要两个功能,请尝试以下操作:
def read():
filename = 'file.txt'
with open(filename, 'r') as f:
content = json.loads(f.read())
return content
def write():
content = read()
with open('pfile.txt', 'w+') as pf:
pf.write(content)