我有很多使用(g)vim编写的文本文件的目录,而且我已经编写了一些我觉得在Python中很有用的实用程序。我使用pound-bang-/usr/bin/env python行开始使用这些实用程序,以便使用在cygwin下安装的Python。我想键入像这样的命令:如何告诉Python脚本(cygwin)在当前(或相对)目录中工作?
%〜CD/SomeBook
%,其中pythonUtil
在/ usr/local/bin目录/ pythonUtil
%pythonUtil ./infile.txt ./ outfile.txt
(或%pythonUtil someRelPath/infile.txt somePossiblyDifferentRelPath/outfile.txt)
pythonUtil:实测值infile.txt;写出outfile.txt;完成(或一些这样的,如果有的话)
但是,我的pythonUtil程序不断告诉我,他们找不到infile.txt。如果我将该实用程序复制到当前的工作目录中,一切都很好,但是我有我的实用程序的副本乱丢了景观。我该怎么做?
另一个编辑:总结---我想要的是os.path.abspath('filename')。这将返回绝对路径名作为字符串,然后所有歧义已被删除。
但是:如果正在使用的Python是安装在cygwin下的那个,那么绝对路径名将是CYGWIN相对路径名,例如/home/someUser/someDir/someFile.txt。但是,如果Python已经安装在Windows下(并且在这里从cygwin终端命令行调用),那么绝对路径名将是完整的Windows路径,从'drive'开始,如D:\ cygwin \ home \ someUser \ someDir \ someFile.txt。
道德:不要指望cygwin Python为未在/上生根的文件生成Windows完全绝对路径名;它超出了它的事件范围。但是,如果使用“/ cygdrive/driveLetter”引导约定指定文件路径,则可以使用cygwin-python访问WinXP系统上的任何文件。
备注:不要在cygwin命令行的WinXP路径中使用'\'作为分隔符;使用'/'并相信蛇。不知道为什么,但某些分隔符可能会被删除,路径可能会被修改为包含额外的级别,例如“Documents and Settings \ someUser”和其他Windows废话。
感谢响应者推动我朝着正确的方向前进。
伟大的思想...我是正确的假设有什么东西在那里,处理相对路径吗?猜猜我会去看看。 – behindthefall 2009-07-13 01:37:36
:)刚更新了相对路径的答案。 – ars 2009-07-13 01:51:17
谢谢! os.path.abspath('path')吸引我。这种东西可以带走所有的不确定性,我不必输入任何东西。 – behindthefall 2009-07-13 02:09:32