在Python中获取文件关联信息

3

我想获取在Linux和Windows中与文件扩展名相关联的程序。我知道在Linux中可以执行xdg-open,在Windows中可以执行start,但是我要打开远程服务器上的媒体文件,使用这种方法会打开Web浏览器而不是默认的媒体播放器。如何获取扩展名的默认应用程序?


在Windows 10中,您仍然可以将其与以下内容关联: https://stackoverflow.com/a/71735909/5781320 - user5781320
2个回答

2

仅涵盖Windows系统:

我认为与.doc(关联winword.exe)相关的步骤将与我刚刚经历的步骤非常接近。

在我的机器上...

步骤1:查看注册表键: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.doc


Windows XP

步骤2:查看默认值(忽略其他所有值)。 我看到的默认值是Word.Document.8

步骤3:现在使用它,并将其插入(请注意下面的键名),以读取默认值

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8\shell\Open\command

那个值是:"\"C:\Program Files\Microsoft Office XP Pro 2003\OFFICE11\WINWORD.EXE\" /n /dde",

这是至少在XP系统上我的电脑上MS Word的路径。

还注意到,Mikel上面提出的建议,在XP上是正确的。

C:\>assoc .doc
.doc=Word.Document.8

C:\>ftype Word.Document.8
Word.Document.8="C:\Program Files\Microsoft Office XP Pro 2003\OFFICE11\WINWORD.EXE" /n /dde

在Windows 7上

从第一步开始,默认值没有设置,糟糕的是,这样就失去了简单性。有一个名为“OpenWithProgIDs”的子键,所以如果默认值为空或取决于操作系统版本,则可以查找该子键。

第二步:读取名为“OpenWithProgIDs”的子键。 有一个名为Word.Document.8的项目,所以现在我们回到了那里。

第三步:再次插入它,以读取默认值。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8\shell\Open\command

在这种情况下(我的情况)价值更加复杂:
“C:\ Program Files(x86)\ Common Files \ microsoft shared \ virtualization handler \ cvh.exe”“Microsoft Word Starter 2010 9014006604090000”/ n“%1”
就注册表使用来说,该值在正确的范围内。
不幸的是,在Windows 7上,“assoc”和“ftype”对于.doc和我机器上winword.exe的路径都没起作用。

我们应该如何在Python中实现这个? - curiousdannii

1
有一个叫做xdg-mime的程序,类似于xdg-open,但它打印文件信息而不是尝试打开该文件。
xdg-mime query filetype /tmp/foobar.png

打印文件 /tmp/foobar.png 的 MIME 类型,本例中为 image/png

xdg-mime query default image/png

打印已注册为打开PNG文件的应用程序的.desktop文件名。

在Windows上,如果找不到API,也许可以使用assocftype,它们是cmd的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接