【问题标题】:How to have Windows Explorer return the path of a file as a string in Python?如何让 Windows 资源管理器在 Python 中将文件的路径作为字符串返回?
【发布时间】:2013-01-30 23:48:14
【问题描述】:

背景

我正在开发一个基本的文本编辑器,需要使用 Windows 资源管理器来获取文件的路径。这是我目前的代码,但它只是打开文件 - 我需要它以字符串形式返回路径:

import subprocess
subprocess.Popen(r'explorer /select, "C:\"')

问题

  1. 如何让它以字符串形式返回路径?
  2. 如何使用路径访问特定文件?例如,如果我想打开文件myFile,但它与我的程序不在同一个文件夹中,我将如何让它在不同的文件夹中访问该文件?对歧义感到抱歉!

技术规格

操作系统:Windows 7
语言:Python 2.7.3

【问题讨论】:

  • 是否要显示一个窗口供用户选择文件?如果是这样,请查看daniweb.com/software-development/python/threads/39327/…
  • @PreetSangha 感谢您的建议,但我不需要。我为此使用this(它本质上是我在此处发布的代码。)我需要脚本不打开文件,而是返回路径,然后消失。如有歧义,请见谅。
  • @xxmbabanexx 我不确定你想为你的奖金做什么,你最初的问题也有点含糊不清,但 tkFileDialog.askopenfilename(initialdir='C:\\') 会为什么工作你要?它看起来像本机对话框,几乎所有其他东西都使用(例如,与我在 Chrome 中按 CTRL+S 时相同)。
  • @Nathan 这真的很有帮助!我将如何指定特定的文件类型?例如,如果我将我的文件另存为.myTXT,我将如何让Windows Explorer 只能打开该类型的文件?
  • @Nathan 您可以将其发布为答案,以便我可以给您代表吗?这真的很有帮助:)

标签: python windows tkinter subprocess windows-explorer


【解决方案1】:

关于问题2,要打开位于进程工作目录中的文件,您可以使用:

file = open('filename.txt', 'r')

要打开不同目录中的文件,您可以使用:

directory = 'C:\Users\MyName\Documents\example.txt'
file = open(directory, 'r')

这也可以,打开指定目录中的文件。如果目录中没有这样的文件,你会得到如下错误:

 File "filename.py", line #, in <module>
   file = open('filename.txt', 'r')
 IOError: [Errno 2] No such file or directory: 'filename.txt'

【讨论】:

  • 相对文件路径与包含源文件的目录无关。它们是相对于进程工作目录的。不一定完全一样。
  • 那么,这是否意味着即使filename.txt 位于与源文件不同的目录中,file = open('filename.txt', 'r') 也可以工作?
  • 是的,相对路径是相对于工作目录的
  • 我不知道,感谢您提供的信息。我会调查的。我也更新了我的答案。
【解决方案2】:

我不建议为此目的使用 Windows 资源管理器,您可能想查看 Tkinter。这非常接近this other question

使用第三方库的主要原因是python可以在多个平台上运行。在 OSX 和 Windows 7 和 Ubuntu 上选择文件当然是完全不同的。这是它不属于 python 运行时的主要原因。

【讨论】:

  • Tkinter 在适用于 Windows、OSX、Ubuntu 的 stdlib 中。如果 python 安装在 GUI 环境中,它应该默认可用。虽然如果 OP 想要“原生”外观,那么可以使用 PySide 之类的东西。
猜你喜欢
  • 2019-01-29
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多