我想提取类的每个方法并将其写入文本文件。该方法可以由任意长度的行组成,并且输入文件可以包含任意数量的方法。我想运行一个循环,当它遇到第一个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)
答案 0 :(得分:0)
目前尚不清楚您的问题到底是什么,或者到目前为止您一直在积极尝试。
看看您提供的代码,有几点要指出:
由于您要遍历使用readlines()获得的行,因此它们已经包含换行符。因此,在写入文件时,除非要重复的换行符,否则应仅使用write()而不是writelines()。
如果所需的输出是每个功能在不同文件上,则每次发现“ def”时都应创建一个新文件。您可以简单地使用一个计数器,然后每次增加它来创建唯一的文件名。
始终确保正确处理文件(打开和关闭或使用with语句)。在您的代码中,似乎不再可以在else语句中打开文件。
基于Extract functions from python file and write them to other files的另一种可能的解决方案(不确定是否重复,因为这是我的新词,但问题非常相似),
代替读取文件的每一行,您可以读取整个文件,然后使用“ def”关键字进行分割。
按照此步骤操作,您应该实现目标。
如果您需要进一步澄清,请告诉我。