首页 > 解决方案 > os.startfile 奇怪的行为

问题描述

我从一个网络扩展接收一个字符串。该字符串是本地文件路径,我正在尝试使用默认操作系统设置打开文件路径,无论它可能是什么。

编辑:对不起!问题是:如何使用操作系统默认应用程序成功打开给定路径?

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

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

奇怪的事情!

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

  2. 如果 Word 尚未打开,则蓝色 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()

标签: python-3.xwindowsfilepath

解决方案


推荐阅读