从Python文件中提取函数并将它们写入其他文件。

3

我将许多函数写在一个Python文件中,但现在决定将它们分解到不同的文件中,并以其名称命名,并使用相同的导入方式。

代码大致如下:

import....

class TestExtractors(unittest.TestCase):

    def test_icloud(self):...
    def test_gogoair(self):...
    def test_touchofmodern(self):...

我在同一个文件中有超过100个函数,导致文件太长。我想将每个函数拆分到一个具有相同importclass TestExtractor(unittest.TestCase):的文件中,并且我希望文件名是函数的名称(不包括(self))。

感谢您的任何建议!


1
由于这些函数是类的一部分,你实际上无法将它们移动到其他地方。你想要做什么? - Neithrik
嗨,Riko,我不介意再次复制类,因为这些函数彼此之间没有绑定,也不需要彼此共同工作。它们唯一需要的是TestExtractors类。因此,每个文件都应包含“import”、“class”和“def”。 - Gilad
好的。如果我理解正确,您想编写一个脚本来自动完成这个任务? - Neithrik
1
这正是我正在寻找的。 - Gilad
我明白了,谢谢你的澄清。稍后会写出答案。 - Neithrik
1个回答

2
请创建一个名为“split.py”的新脚本或其他脚本。该脚本应执行以下操作:
1)将上述文件作为字符串打开。 参考:Python中如何将文本文件读入字符串变量 2)使用参数“ def ”分割。现在,您将拥有一个字符串列表,称为列表L。
3)忽略L中的第一个元素并遍历所有其他元素。
4)对于每个字符串S,请打开一个新文件并将其写入其中。
import....

class TestExtractors(unittest.TestCase):

在此之下,写入字符串S。

如果需要澄清任何步骤,请告诉我。


我该如何告诉 open() 函数按 def 进行 .split() 操作? - Gilad
好的,我已经成功完成了。但是我不知道如何让脚本命名文件与函数相同。 - Gilad
为了做到这一点,您需要解析该字符串S。如果您只是使用.find找到第一个“(”的索引,那么您就可以得到名称。 - Neithrik
使用以下代码读取文件并将其拆分:with open("laknertest.py") as myfile: data = myfile.read().replace('\n', '') l = data.split('def')然后,遍历拆分的列表,并将每个函数写入单独的HTML文件:for s in l[1:]: with open("/home/superfly/Documents/split/{0}.html".format(s), "w") as f: f.write(s)但不知道如何继续进行下一步操作。 - Gilad
你走在正确的轨道上。只要稍微调整一下代码,你就能解决它 :) - Neithrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接