python - 如何将数据从一个功能传输到另一个功能?
问题描述
我正在尝试将从一个功能(读取)接收到的数据传输到另一个(写入)。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()
解决方案
当您使用一对括号引用函数时,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)
推荐阅读
- css - 为特定元素分配背景颜色
- node.js - admin.firestore.FieldValue.serverTimestamp() 不适用于 Firebase 实时数据库
- r - 当我更改数字格式时,为什么 R 基础图会添加不需要的字符?
- r - 如何在 R 中模拟左截断的 Weibull 故障时间数据
- python - Discord.py 中的随机数生成器
- scikit-learn - 对于 sklearn GridSearchCV,你如何保证每个折叠的训练集中都有类?
- python - Python For 循环等价
- vb.net - Visual Basic Windows 窗体中的超链接在 Visual Studio 2017 中只能部分单击
- angularjs - AngularJS orderBy 日期未正确排序
- mapbox - 如何将 Mapbox iOS 框架集成到 Kotlin 原生中