首页 > 解决方案 > 如何将数据从一个功能传输到另一个功能?

问题描述

我正在尝试将从一个功能(读取)接收到的数据传输到另一个(写入)。file.txt 中的现有数据应转换为 json 格式并打印到控制台,该数据应通过第二个函数获取并写入名为 pfile.txt 的文件中。我就是不能让他们一起工作。在普通 shell 中将每个函数作为命令单独运行时,它们可以工作;加起来,没那么多。我在这里想念什么?

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()

标签: pythonpython-3.x

解决方案


当您使用一对括号引用函数时,Python 将不带参数调用该函数并解析它的返回值(如果有)。这不是 bash;函数将数据作为内存中的变量相互传递,而不是通过标准输入/标准输出。

您编写的代码似乎充满了无限循环(函数调用自身),并且可能会因“超出递归深度”错误而崩溃。这些可以通过不调用自身内部的函数(或具有相互调用的函数循环)来解决。

您编写的代码没有任何需要多个功能的地方。我会减少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)

推荐阅读