Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成包含固定代码的python文件_Python_Python 3.x - Fatal编程技术网

生成包含固定代码的python文件

生成包含固定代码的python文件,python,python-3.x,Python,Python 3.x,在我的日常工作中,我编写了不同的模型,对于每个模型,我需要创建一个python文件,如下所示: class-SomeModel: 定义参数(自): 返回 def定义_输入(自身): 返回 def运行模式(自): 返回 我想写一个python脚本,它将创建一个具有这种格式的文件 我试过: import os path = 'path_tol_folder_in_which_to_store_the_file' if not os.path.exists(path): os.makedirs(

在我的日常工作中,我编写了不同的模型,对于每个模型,我需要创建一个python文件,如下所示:

class-SomeModel:
定义参数(自):
返回
def定义_输入(自身):
返回
def运行模式(自):
返回
我想写一个python脚本,它将创建一个具有这种格式的文件

我试过:

import os

path = 'path_tol_folder_in_which_to_store_the_file'

if not os.path.exists(path):
os.makedirs(path)

with open(os.path.join(path, 'some_model.py'), 'w') as some_model:
some_model.writelines(
'class SomeModel:'
'    def define_params(csv):'
'        csv = ("PD", STRING)'
'        return csv'
)
运行此代码时,会创建文件,但其中只有一行:

类SomeModel:def define_params(csv):csv=(“PD”,STRING)返回csv
(假设这是一行)

当我使用ctrl+alt+L(格式化代码)时,它并没有按照应该的方式格式化代码

是否有办法确保文件中的代码格式正确,即

class-SomeModel:
定义参数(csv):
csv=(“PD”,字符串)
返回csv

谢谢

使用三重引号,保留空格:

some_model.write(
'''class SomeModel:
    def define_params(csv):
        csv = ("PD", STRING)
        return csv
'''
)

使用保留空格的三重引号:

some_model.write(
'''class SomeModel:
    def define_params(csv):
        csv = ("PD", STRING)
        return csv
'''
)

writelines
需要一个iterable字符串(但也会接受一个字符串,就像这里所做的那样),而您传递的实际上是一个字符串:Python隐式连接由空格(空格、换行符…)分隔的字符串

您可以向它传递一个字符串列表(注意分隔字符串的
[]
和逗号),但必须在每行末尾明确地包含一个换行符
\n

some_model.writelines([
'class SomeModel:\n',
'    def define_params(csv):\n',
'        csv = ("PD", STRING)\n',
'        return csv'
])
或者更简单地说,多行字符串:

some_model.write("""
class SomeModel:
    def define_params(csv):
        csv = ("PD", STRING)
        return csv
""")

writelines
需要一个iterable字符串(但也会接受一个字符串,就像这里所做的那样),而您传递的实际上是一个字符串:Python隐式连接由空格(空格、换行符…)分隔的字符串

您可以向它传递一个字符串列表(注意分隔字符串的
[]
和逗号),但必须在每行末尾明确地包含一个换行符
\n

some_model.writelines([
'class SomeModel:\n',
'    def define_params(csv):\n',
'        csv = ("PD", STRING)\n',
'        return csv'
])
或者更简单地说,多行字符串:

some_model.write("""
class SomeModel:
    def define_params(csv):
        csv = ("PD", STRING)
        return csv
""")

writelines
仍然需要在每行末尾换行。@mad物理学家哦,是的/只需在您的列表之前,在中的x上打一个“\n”
x+”\n“是。。。在这里使用三重引号要容易得多…三重引号很有帮助。非常感谢<代码>写线
仍然需要在每行末尾换行。@mad物理学家哦,是的/只需在您的列表之前,在中的x上打一个“\n”
x+”\n“是。。。在这里使用三重引号要容易得多…三重引号很有帮助。非常感谢
writelines
需要一组以换行符结尾的字符串。这很神奇,因为字符串是可写的,但你真的应该调用
write
。@madpysicator Right,这是复制粘贴错误:-)
writelines
需要一个以换行结尾的可写字符串。因为字符串是可写的,所以它神奇地起作用了,但你真的应该调用
write
。@madpysicator Right,这是复制粘贴错误:-)只是一个想法。您可以从父类继承。父类具有用于参数和状态定义的方法。在子类中,您只定义run方法。这只是一个想法。您可以从父类继承。父类具有用于参数和状态定义的方法。在子类中,只定义run方法。