【问题标题】:EOL while scanning string literal in Python menu在 Python 菜单中扫描字符串文字时 EOL
【发布时间】:2019-08-16 11:53:58
【问题描述】:

您将无法运行该脚本,遗憾的是我不知道为什么。 这是关于 EOL 的,但我不太喜欢 python,所以我需要你的帮助, 我尝试了不同的东西,但没有奏效。另外,我的朋友实际上是 phyton 尝试并失败了。

这只是一个菜单代码,用于在我想检查我的计算机时运行多个防病毒软件

import sys, string, os, arcgisscripting
def menu():
    print ("Welcome To S1MPL3 MENU, an simple made antivirus for open Wi-Fi and Computer Repair.\n 1. Easy File Check \n 2.Total Time Security \n 3.Suspicius Ip Check")
    choice = input()

    if choice == "1":
        print("Checking Files ... (The process wont take long !")
        os.chdir 'C:\Users\alexa\Desktop\Core_Files\Projects\S1mpl3 Antivirus\Check\Files\File_Check.vbs\
        menu()

    if choice == "2":
        print("TTS Chosen!")
        os.chdir  'C:\Users\alexa\Desktop\Projects\S1mpl3_Antivirus\Check\\Files\Ip_Check\'
        menu()

    if  choice == "3":
         print("Checking For Suspicius Ip in your Home Wi-Fi")
         os.chdir 'C:\Users\alexa\Desktop\Core_Files\Projects\S1mpl3 Antivirus\Check\Files\Ip_Check\'
         menu()

menu()

错误应该在选择2的S1m中

错误:扫描字符串文字时出现语法错误 EOL

【问题讨论】:

    标签: python eol


    【解决方案1】:

    您在路径中使用了反斜杠字符“\”。虽然这在命令行上是可以的,但它(大部分)在源代码中是不正确的。反斜杠字符用作转义字符以更改后面字符的含义。在您的情况下,尾随撇号被转义,因此路径字符串不会关闭。

    您可以使用@RonaldAaronson 建议的原始字符串:

    r'C:\Users\alexa\Desktop\Projects\S1mpl3_Antivirus\Check\Files\Ip_Check\'
    

    或者像这样用双反斜杠替换所有单反斜杠:

    'C:\\Users\\alexa\\Desktop\\Projects\\S1mpl3_Antivirus\\Check\\Files\\Ip_Check\\'
    

    许多 Windows 函数也可以使用 unixoid 路径分隔符“/”,os.chdir() 也可以:

    os.chdir('C:/Users/alexa/Desktop/Projects/S1mpl3_Antivirus/Check/Files/Ip_Check')
    

    osos.sepos.altsep,它们是路径名分隔符。使用这些来编写更好的可移植代码。请阅读文档。这总是一个好主意。

    第二个观察:你需要用括号调用os.chdir()

    【讨论】:

    • 根本没用。现在的问题是反弹而不是“s1m”
    • @IM 抱歉,写完答案后我没有检查生成的 HTML。你有没有像现在看到的那样加倍反斜杠?
    • 或使用原始字符串文字,例如r'C:\Users\alexa\Desktop\Projects\S1mpl3_Antivirus\Check\Files\Ip_Check\'
    • @RonaldAaronson 对。 ;-) 我不确定哪一种是 Pythonic 方式。
    • 来自手册:字符串和字节文字都可以选择以字母'r'或'R'作为前缀;此类字符串称为原始字符串,并将反斜杠视为文字字符。因此,在字符串文字中,原始字符串中的 '\U' 和 '\u' 转义不会被特殊处理。
    【解决方案2】:

    您在行尾缺少单引号:

    if choice == "1":
            print("Checking Files ... (The process wont take long !")
            os.chdir 'C:\Users\alexa\Desktop\Core_Files\Projects\S1mpl3 Antivirus\Check\Files\File_Check.vbs\   **<---here**
            menu()
    

    【讨论】:

      【解决方案3】:

      我在打开目录时遇到了类似的问题。我使用了原始字符串和双反斜杠,它可以工作。示例:

      os.chdir(r"C:\\Users\\alexa\Desktop\\Core_Files\\Projects\\S1mpl3Antivirus\\Check\\Files\\")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-30
        • 2020-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多