Python 脚本中的新行创建 EOL 错误

Python 脚本中的新行创建 EOL 错误

我正在为 Ubuntu 创建一个 Python 程序,我需要将一个 python 脚本写入一个文件,但是\n代码中的会在文件中创建一个新行,它不会被复制为\n,因此我收到 EOL 错误。

这是 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")

在这一部分中:

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")

将上述内容写入文件的代码是:

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()

我该如何解决这个问题?

答案1

了解脚本应该做什么

恐怕你误解了脚本应该如何应用。没有理由再写一个脚本将此脚本放入任何文件中。

这与编写应用程序一样,需要绕一大圈,而且是一件很奇怪的事情。你应该简单地创造剧本:

  1. 复制/粘贴脚本这里放入一个空文件中,另存为set_startupscript.py
  2. 称呼用正确的参数:

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

    在哪里:

     '<name>'
    

    是要生成的启动器的名称,位于引号之间,并且

    '<command>'
    

    是启动器要运行的命令,也在引号之间。

然后它在中创建一个启动器~/.config/autostart,它将'<command>'在登录时运行以下命令:。

该脚本本身不用作启动脚本,而是创造启动器来~/.config/autostart运行命令。

复制脚本

如果您可能出于某种原因需要复制脚本(但同样:为什么),或者您需要将任何其他文件复制到另一个位置,请在 中python3使用:

shutil.copyfile(sourcefile, target)

相关内容