我正在从Web扩展接收字符串。该字符串是本地文件路径,无论什么情况,我都尝试使用默认的OS设置打开文件路径。
edit:对不起!问题是:如何使用OS默认应用程序成功打开给定路径?
文件路径最初是一个格式如下的字符串:
'file:///C:/Test/File/Path.docx'
奇怪的东西!
如果Word已打开,则可以正常工作。
如果尚未打开Word,蓝色的Word“启动”屏幕将显示一秒钟,然后消失(崩溃,因为随后的尝试显示“安全模式下的起始单词?”对话框显示一秒钟) )。
除非我按两次具体使用两次“ os.startfile”,否则它根本不会起作用。在try语句外面一个,在里面一个。任何其他组合都无法使用。
在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()