【问题标题】:Opening file - Performing a function打开文件 - 执行功能
【发布时间】:2011-03-28 01:23:59
【问题描述】:

我想知道是否有人可以指导我如何为文件提供函数...这有点难以解释,所以我会尽力而为。
假设我有一个应用程序(使用 wxPython),假设我有一个文件。现在这个文件被指定为使用应用程序打开。因此,我双击该文件并打开应用程序。现在我的问题是,必须在文件上写入什么内容才能打开一个对话框?所以我们双击该文件,它会在应用程序上打开一个对话框?

PS:我知道我必须先将程序与某种文件类型关联才能双击它,但这不是问题。

【问题讨论】:

  • 那么您是否想要让您的程序能够解释脚本来执行特定任务?
  • 你的问题没有任何意义。您的应用程序可以使用与应用程序关联的文件。您的应用程序可以通过 sys.argv[] 读取传递的文件名这里还需要什么?如果您的应用程序需要一些硬编码路径,那么功能完全掌握在您的应用程序手中。

标签: python file wxpython


【解决方案1】:

AFAIK 大多数平台只是使用您单击的文件作为参数调用帮助应用程序,因此您的文件路径将位于 sys.argv[1]

【讨论】:

  • 您能详细说明一下吗?
  • 在哪一部分?据我所知,当您双击与另一个程序关联的文件时,另一个程序将使用您的文件(您单击的内容)作为参数运行,例如python2.7 /full/path/to/your/file 因此,如果您import sys 和看看sys.argv数组,你应该可以找到你的文件并从那里对其进行操作。
  • @Richo 那么,您是否建议我在我的应用程序中添加一行,例如 if sys.argv[1] == filepath: do something?
  • 我不确定我是否了解您想要做什么,我可以帮助您了解事情的运作方式,但如果没有更多信息,我无法告诉您如何实现您的特定目标。是的,您可以使用它来测试调用脚本时使用的文件名。
  • @Richo 本质上,我只是想在应用程序上做一些事情,因为我用一个文件打开它。所以我有一个包含信息的文件,假设在这个例子中,它只有文本:Hello。因此,当我打开它时,它会打开应用程序并从文件中弹出一个带有 Hello 的消息框。
【解决方案2】:

我认为他想要做的是将文件扩展名关联到他的应用程序,这样当他通过双击打开文件时,它会将文件的内容发送到他的应用程序;在这种情况下,在 Dialog 中显示内容?

如果是这种情况,那么您需要做的第一件事(假设您在 Windows 上)是为您的文件扩展名创建适当的文件关联。这可以通过注册表来完成,当设置正确时,将使用作为第一个参数执行的文件的路径/文件名打开您的应用程序。理想情况下,它与从命令行执行它一样:

C:\your\application.exe "C:\The\Path\To\my.file"

现在如上所述,您需要使用 sys.argv 来获取传递给您的应用程序的参数,在这种情况下,C:\Path\To\my.file 将是第一个论点。简单地说,sys.argv 是传递给应用程序的参数列表;在这种情况下,第一个条目 sys.argv[0] 将始终是您的应用程序的路径,如上所述,sys.argv[1] 将是您的自定义文件的路径。

例子:

import sys

myFile = sys.argv[1]
f = file(myFile, "r")
contents = f.read()
f.close()

然后您将能够将变量 contents 传递给您的对话框以执行任何操作。

【讨论】:

  • 是的,我知道我必须在注册表中添加一些文件关联,而且我一直在考虑这个...我的意思是当您使用应用程序打开文件时,就我而言'已经看到,它只是启动应用程序,即使它已经打开......我怎样才能防止这种情况发生,而不是打开一个新进程,只是能够将信息传递给正在运行的进程?希望这是有道理的哈哈。
  • 老实说,我从来没有深入研究过它。这个link 应该给你一些需要的信息,它解释了如何避免打开应用程序的多个实例,它没有涉及的是如何将 sys.argv[1] 的值发送到它之后的帧检测到已经打开了一个应用实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多