Nova linha no script python criando erro EOL [closed]

0

Estou criando um programa Python para o Ubuntu e preciso escrever um script python em um arquivo, mas o \n no código cria uma nova linha no arquivo, não é copiado como \n , então eu recebo um erro de EOL.

Este é o código do script Python:

#!/usr/bin/env python3
import os
import sys
home = os.environ["HOME"]

name = sys.argv[1]; command = sys.argv[2]

launcher = ["[Desktop Entry]", "Name=resolutionx", "Exec=/bin/bash resolutionx.sh", "Type=Application", "X-GNOME-Autostart-enabled=true"]
file = home+"/.config/autostart/"+name.lower()+".desktop"

if not os.path.exists(file):
    with open(file, "wt") as out:     
        for l in launcher:
            l = l+name if l == "Name=resolutionx" else l
            l = l+command if l == "Exec=/bin/bash resolutionx.sh" else l
            out.write(l+"\n")
else:
  print("file exists, choose another name")

Nesta parte:

if not os.path.exists(file):
    with open(file, "wt") as out:     
        for l in launcher:
            l = l+name if l == "Name=resolutionx" else l
            l = l+command if l == "Exec=/bin/bash resolutionx.sh" else l
            out.write(l+"\n")

O código para escrever o acima no arquivo é:

fStartUpScript = open("set_startupscript.py", "w")
fStartUpScript.write("""
#!/usr/bin/env python3
import os
import sys
home = os.environ["HOME"]

name = sys.argv[1]; command = sys.argv[2]

launcher = ["[Desktop Entry]", "Name=resolutionx", "Exec=/bin/bash resolutionx.sh", "Type=Application", "X-GNOME-Autostart-enabled=true"]
file = home+"/.config/autostart/"+name.lower()+".desktop"

if not os.path.exists(file):
    with open(file, "wt") as out:     
        for l in launcher:
            l = l+name if l == "Name=resolutionx" else l
            l = l+command if l == "Exec=/bin/bash resolutionx.sh"     else l
            out.write(l+"\n")
else:
  print("file exists, choose another name")""")
fStartUpScript.close()

Como posso resolver isso?

    
por TellMeWhy 25.06.2015 / 16:34

1 resposta

1

Entendendo o que o script deve fazer

Eu tenho medo que você esteja entendendo mal como o script deve ser aplicado. Não há razão para que outro script escreva esse script em um arquivo qualquer.

Isso seria o mesmo que escrever um aplicativo para escrever um aplicativo; um enorme desvio e uma coisa estranha a fazer. você deve simplesmente criar o script:

  1. Copie / cole o script de aqui em um arquivo vazio, salve-o como set_startupscript.py
  2. Ligue com os argumentos certos:

    python3 /path/to/set_startupscript.py '<name>''<command>'
    

    onde:

     '<name>'
    

    é o nome do lançador a ser produzido, entre aspas e

    '<command>'
    

    é o comando a ser executado pelo lançador, também entre aspas.

Em seguida, ele cria um ativador em ~/.config/autostart , que executará o comando: '<command>' no login.

O script em si não deve ser usado como um script de inicialização, mas para criar um ativador em ~/.config/autostart para executar um comando.

Copie o script

SE você precisaria copiar o script por algum motivo (mas novamente: por que ), ou você precisa copiar qualquer outro arquivo para outro local, em python3 , use:

shutil.copyfile(sourcefile, target)
    
por Jacob Vlijm 25.06.2015 / 20:56