-1

说我有一个模块 MyModule。MyModule 作为函数 Myfunction。Myfunction 根据输入和 pickle 文件 'my.p' 执行某些操作并返回它。

我有一个名为 MyProgram.py 的程序。在 MyProgram.py 我导入 MyModule 并大量使用 Myfunction。喜欢 :

from MyModule import MyFunction

MyProgram.py 需要一些输入文件。

MyModule.py 和 MyProgram.Py 和 my.p 都在同一个文件夹中。

问题是,我想在 Windows 资源管理器上启动 MyProgram.py。我告诉过你它需要一些输入文件。所以我(实际上是我正在为其编写这个程序的人)更可取的方法是单击输入文件,拖放到 MyProgram.py 上,然后 tada!一切都完成了。

不好的部分是,如果我那样做,它会抛出一条错误消息,说它找不到 my.p。

如果我转到命令行并输入

>python MyProgram.py input.text

这里没有问题。

我想我必须在 sys.argv 上附加一些东西,但我真的不知道。有什么帮助吗?

4

1 回答 1

0

这可能是由使用相对路径名引起的。

使用绝对路径:

from os.path import realpath, dirname
BASE_PATH = dirname(realpath(__file__))
myp       = open(BASE_PATH+'/my.p')
于 2012-09-27T09:01:32.167 回答