【问题标题】:Python os.startfile Can't Find The FIlePython os.startfile 找不到文件
【发布时间】:2016-07-03 22:23:37
【问题描述】:

我遇到了 Python 编程问题。在我的程序中,我使用os.startfile() 启动程序,但它不允许我。

当我的程序执行启动文件的命令时,我在 Windows 脚本主机中收到以下错误:

Script:     C:\Users\Personal Name\Desktop\Program\Files\Volume\Volume Max\Volume Max.vbs

Line: 3

Token: 1

Error: Can't find the file.

Code: 80070002

Source (null)

我有确切的路径所在的文件,并且名称拼写正确。我已经仔细检查过了。我删除了文件名的空格,并查找了我没有成功的错误代码,因为 Windows 对其他 Windows 文件有相同的错误。

现在我可能错了,这不是 Python 错误,但我认为是这样。

代码:

import socket
import time
import os

host = '192.168.56.1'
port = 5000

clients = []

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
s.setblocking(0)

quitting = False
print ("Server Started")

while not quitting:
        try:
                data, addr = s.recvfrom(1024)
                if ("Quit") in str(data):
                    quitting = True

                print (time.ctime(time.time()) + str(addr) + str(data))

                if "Volume Max" in data:
                        print ("Volume Max")
                        os.startfile('C:\\Users\\wbe0719\\Desktop\\Program\\Files\\Volume\\Volume Max\\Volume Max.vbs')

        except:
                pass
s.close()

【问题讨论】:

  • 你是怎么调用 startfile 的?
  • 看起来您正在运行 Visual Basic 程序,而不是 Python 程序...
  • 这里是我调用 startfile 的方式:os.startfile('C:\Users\Personal Name\Desktop\Program\Files\Volume\Volume Max\Volume Max.vbs')
  • 我没有使用 Visual Basic。虽然我调用了一个 Visual Basic 脚本。嗯......也许那个脚本我得到了一个错误。坚持,稍等。我要去检查一些东西。
  • 您需要 os.startfile(r'C:\Users\Personal Name\Desktop\Program\Files\Volume\Volume Max\Volume Max.vbs') 即在前面加上一个 r 以使其成为原始字符串或用正斜杠替换反斜杠 stackoverflow.com/questions/27384489/…

标签: python windows path startup os.system


【解决方案1】:

文本中的反斜杠会导致下一个字符被解释为特殊字符,而不是其实际值。

例如,\n 是换行符,\b 是退格符。

有三种方法可以解决这个问题:

  1. 在路径中使用正斜杠而不是反斜杠。 DOS/Windows 仍会识别它们。

  2. 使用原始字符串,它将内容与输入的内容完全相同。为此,请在字符串前面加上字母 'r',如下所示:

    raw_path = r'\b'

  3. 用另一个反斜杠转义每个反斜杠,如下所示:

    escaped_path = 'C:\\Users\\Personal Name\\Desktop\\...'

【讨论】:

  • 那行不通。我仍然遇到同样的错误。我应该发一些东西给你分析吗?
  • 现在有问题了。
【解决方案2】:

已解决:

我解决了!

解释它的简短方法:我将 Volume Max.vbs 文件移动到 python 脚本所在的文件夹,只是说在 os.startfile 中没有任何路径的打开 Volume Max.vbs 脚本。像这样:os.startfile(Volume Max.vbs)

【讨论】:

  • 如果您从另一个目录启动 Python 脚本,例如在命令提示符或运行对话框中,工作目录将不是 Python 脚本目录,startfile 将失败。 VBS 脚本也继承了这个工作目录。如果它需要打开一个文件,它应该能够相对于它自己找到它,而不依赖于工作目录。您可以通过首先通过os.chdir(os.path.dirname(sys.argv[0])) 设置工作目录来破解此问题。但最好使用派生的绝对路径。
猜你喜欢
  • 2018-03-26
  • 2019-07-29
  • 1970-01-01
  • 2018-01-06
  • 2020-01-14
  • 2020-09-22
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多