1

我有很多目录,其中包含使用 (g)vim 编写的文本文件,并且我编写了一些我认为在 Python 中有用的实用程序。我从 pound-bang-/usr/bin/env python 行开始实用程序,以便使用安装在 cygwin 下的 Python。我想输入这样的命令:

%cd ~/SomeBook

%哪个pythonUtil

/usr/local/bin/pythonUtil

%pythonUtil ./infile.txt ./outfile.txt

(或 % pythonUtil someRelPath/infile.txt somePossiblyDifferentRelPath/outfile.txt)

pythonUtil:在file.txt中找到;编写 outfile.txt;完成(或一些类似的,如果有的话)

但是,我的 pythonUtil 程序一直告诉我他们找不到 infile.txt。如果我将实用程序复制到当前工作目录中,一切都很好,但是我的实用程序的副本会乱扔垃圾。我应该做什么?

另一个编辑:总结 --- 我想要的是 os.path.abspath('filename')。这会将绝对路径名作为字符串返回,然后所有歧义都已删除。

但是:如果使用的 Python 是安装在 cygwin 下的,那么绝对路径名将是 CYGWIN 相对路径名,例如 /home/someUser/someDir/someFile.txt。但是,如果 Python 已安装在 Windows 下(并且这里是从 cygwin 终端命令行调用的),那么绝对路径名将是完整的 Windows 路径,从“驱动器”开始向下,如 D:\cygwin\home\someUser \someDir\someFile.txt。

道德:不要指望 cygwin Python 为不以 / 为根的文件生成 Windows 完整的绝对路径名;它超出了它的事件视界。但是,如果您使用“/cygdrive/driveLetter”引导约定指定文件的路径,则可以使用 cygwin-python 访问 WinXP 系统上的任何文件。

备注:不要在 cygwin 命令行的 WinXP 路径中使用 '\' 作为分隔符;使用'/'并相信蛇。不知道为什么,但可能会删除一些分隔符,并且可能会修改路径以包含额外的级别,例如“文档和设置\某些用户”和其他 Windows 废话。

感谢响应者将我推向正确的方向。

4

3 回答 3

4

看看 os.getcwd:

编辑:对于相对路径,请查看 os.path 模块:

特别是 os.path.join 和 os.path.normpath。例如:

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))
于 2009-07-13T01:35:42.267 回答
0

当你输入“ls”时会发生什么?你看到那里列出了“infile.txt”吗?

于 2009-07-13T01:36:45.243 回答
0
os.chdir(my_dir)

或者

os.chdir(os.getcwd())
于 2009-07-13T01:46:58.477 回答