我有很多目录,其中包含使用 (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 废话。
感谢响应者将我推向正确的方向。