我正在尝试编写辅助函数来帮助我生成带有函数定义的新文件。以下是代码的一部分:
def new_function_file(file_name, fun_name, arguments):
f = open(file_name + ".py", 'w')
f.write("\tdef " + fun_name + str(("self", ) + arguments) + ":\n")
new_leetcode_file("testfile", "test", ("arr1", "arr2"))
然而,这会产生" def测试('自我'' arr1',' arr2'):"在testfile.py中。我想知道如何在没有生成单引号的情况下正确解析参数?
答案 0 :(得分:3)
格式化打印在这里可能很有用,同时还有一些细节:
def new_function_file(file_name, fun_name, arguments):
f = open(file_name + ".py", 'w')
# expand the arguments and join with "," separators:
args = ", ".join(arguments)
# use formatted print to put it all together nicely:
write_string = "\tdef {fn}(self, {ar}):\n".format(fn=fun_name, ar=args)
f.write(write_string)
您的演示输入:
new_leetcode_file("testfile", "test", ("arr1", "arr2"))
“writestring”将是:
'\tdef test(self, arr1, arr2):\n'
并且您可以直接将其写入文件而无需任何其他标点符号。
答案 1 :(得分:1)
您需要'(' + ', '.join(('self',) + arguments) + ')'
而不是str(('self',) + arguments)
。
话虽如此,可能是更好的方式来实现你想做的任何事情......我将回应@SvenMarnach的评论
“将Python源代码编写到Python文件中仅在极少数情况下才有用。”
你实际上想要用你正在生成的这个新的python源文件来完成什么?
答案 2 :(得分:1)
在这里你要写一个元组到你的文件,而你必须写这个元组的内容。
def new_function_file(file_name, fun_name, arguments):
f = open(file_name + ".py", 'w')
f.write("\tdef " + fun_name+"(")
arguments=["self"].extend(list(arguments))
for x in arguments:
if x!=arguments[-1]: f.write(x+",")
else: f.write(x)
f.write("):\n")