python - 如何将python方法文本复制到文本文件
问题描述
我想提取类的每个方法并将其写入文本文件。该方法可以由任意长度的行组成,输入文件可以包含任意数量的方法。我想运行一个循环,当它遇到第一个def
关键字时开始将行复制到输出文件并继续直到第二个def
。然后它将继续,直到所有方法都被复制到单个文件中。
输入:
class Myclass:
def one():
pass
def two(x, y):
return x+y
输出文件 1:
def one():
pass
输出文件 2:
def two(x, y):
return x+y
代码:
with open('myfile.py', 'r') as f1:
lines = f1.readlines()
for line in lines:
if line.startswith('def'): # or if 'def' in line
file = open('output.txt', 'w')
file.writelines(line)
else:
file.writelines(line)
解决方案
目前还不清楚您的问题到底是什么,或者您到目前为止积极尝试了什么。
查看您提供的代码,有几点需要指出:
由于您正在迭代使用 readlines() 获得的行,它们已经包含换行符。因此,在写入文件时,您应该简单地使用 write() 而不是 writelines(),除非您想要重复的换行符。
如果所需的输出是不同文件上的每个函数,则每次发现“def”时都应创建一个新文件。您可以简单地使用计数器并每次增加它来创建唯一的文件名。
始终确保您正确处理文件(打开和关闭或使用 with 语句)。在您的代码中,似乎该文件将不再在您的 else 语句中打开。
另一种可能的解决方案,基于从 python 文件中提取函数并将它们写入其他文件(不确定是否重复,因为我是新来的,但非常相似的问题),将是:
您可以读取整个文件,然后用“def”关键字将其拆分,而不是读取文件的每一行。
- 将文件读入字符串。
- 将字符串按“def”(确保最后不会没有“def”字)拆分成一个列表。
- 忽略第一个元素,因为它将是第一个函数定义之前的所有元素,并遍历其余元素。
- 将这些字符串中的每一个(因为它们将是您想要的函数 defs)写入一个新文件(您可以使用计数器并递增它以为每个文件生成不同的名称)。
按照这个步骤,你应该实现你的目标。
如果您需要额外的说明,请告诉我。
推荐阅读
- php - wp_schedule_single_event 挂钩未触发
- sapui5 - 使用 Jacob 识别多个 sap 窗口会话
- mapbox - 将点(或 PointLike)转换为 LngLat 对象
- javascript - 创建基于 Express 的服务器时未找到 server.html
- android - 使用 React Native 在 android 中选择 .png 图像时始终显示黑色背景
- python - CNN框不能超过原始图像尺寸错误
- javascript - 无法在 React.js 中使用 useState 进行渲染
- javascript - 如何在使用 JavaScript 保存图像的同时清除图像?
- flutter - 我如何存储到列表和地图?
- flutter - 为什么设置器的值是用 = 而不是通过 ( )