2017-11-10 7 views
-2

私はこのようなものを書いています。Pythonの文字列への書き込みを続ける方法

script = """ 
    import network 
    from machine import Pin, PWM 
    from time import sleep 
""" 

古いものを削除せずに後に書きたいと思います。私はどのように行いますか?

+0

? –

+1

一般に、任意の文字列で連結演算子( '+ =')を使うことができます: 'script + = '\ nprint(" Hello ")' '。しかし、Pythonコードを文字列に入れるのはちょっと変なことです...何をしようとしていますか? –

+0

@DavidCain haha​​あなたは正しいです。私はmicropython(esp8266ボード)に取り組んでいます。あなたがボードに電源を入れるとき。毎回同じコードを書く必要がありますが、 'main.py'を作成してコードを書いておけば、起動するたびに動作します。だから、私は文字列にそれを書いている、私は物事を追加し、その後main.py –

答えて

2

あなたはtemplateにスクリプトを入れた後、値を入力でき

>>> script = """ 
...  import network 
...  from machine import Pin, PWM 
...  from time import sleep 
... """ 
>>> script += "\nimport os" 
+3

@KenanKazim文字列の連結は高価です。心がけてください。ループで連結する場合は '+ ='を使わず、代わりに 'str.join'を使用してください。 –

1

を、以下のような文字列に文字列を追加することができます。これは、生成されたスクリプトが中程度に複雑な場合でも、文字列を連結するよりも管理が簡単です。

# script.template 
import network 
from machine import Pin, PWM 
from time import sleep 

${xyz} 

# script-generator.py 
from string import Template 

with open('script.template') as f: 
    template = Template(f.read() 

contents = template.substitute(xyz='xyz') 

with open('main.py', 'w') as f: 
    f.write(contents) 

または別のテンプレートファイルは行き過ぎのように思える場合は、このようstr.format()を使用することができます。

連結以外
script = """\ 
import network 
from machine import Pin, PWM 
from time import sleep 

{xyz} 
""" 

data = {'xyz': 'xyz'} 

with open('main.py', 'w') as f: 
    f.write(script.format(**data)) 
+0

この回答に間違いがありますか?実際の問題は文字列の連結に関する問題ではありません。おそらくいくつかの動的要素でスクリプトを生成することです。 –

+1

これは素晴らしい方法ですが、最初のものはマイクロパイソンボードにライブラリがあまりないので動作しません.2番目の方法では十分です。ありがとう –

関連する問題