os.startfile奇怪的行为

时间:2019-11-28 06:21:18

标签: python-3.x windows filepath

我正在从Web扩展接收字符串。该字符串是本地文件路径,无论什么情况,我都尝试使用默认的OS设置打开文件路径。

edit:对不起!问题是:如何使用OS默认应用程序成功打开给定路径?

文件路径最初是一个格式如下的字符串:

'file:///C:/Test/File/Path.docx'

奇怪的东西!

  1. 如果Word已打开,则可以正常工作。

  2. 如果尚未打开Word,蓝色的Word“启动”屏幕将显示一秒钟,然后消失(崩溃,因为随后的尝试显示“安全模式下的起始单词?”对话框显示一秒钟) )。

  3. 除非我按两次具体使用两次“ os.startfile”,否则它根本不会起作用。在try语句外面一个,在里面一个。任何其他组合都无法使用。

  4. 在IDLE中,仅通过一次“ os.startfile”调用即可工作100%。

我也尝试过使用subprocess.check_call,但这根本无法启动任何东西。

这是脚本:

#!/usr/bin/env python
import sys
import json
import struct
import re, subprocess, os

def read_thread_func(queue):
  while 1:
    text_length_bytes = sys.stdin.buffer.read(4)

    if len(text_length_bytes) == 0:
      sys.exit(0)

    text_length = struct.unpack("i", text_length_bytes)[0]
    text = sys.stdin.read(text_length)
    data = json.loads(text)
    fileStr = data['url']
    filePath = re.sub('file:\/{1,3}','',fileStr)
    filePath = filePath.replace("/","\\")
    filePath = os.path.normpath(filePath)
    os.startfile(filePath)
    try:
      os.startfile(filePath)
    except AttributeError:
      "nothing to see here"
    sys.exit(0)

def Main():
  read_thread_func(None)
  sys.exit(0)

if __name__ == '__main__':
  Main()

0 个答案:

没有答案