如何将数据从一种功能转移到另一种功能?

时间:2019-05-02 19:28:41

标签: python python-3.x

我正在尝试将从一个功能(读取)接收的数据传输到另一个功能(写入)。 应该将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()

1 个答案:

答案 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)