2009-07-13 78 views
1

我有很多使用(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废话。

感谢响应者推动我朝着正确的方向前进。

回答

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')) 
+0

伟大的思想...我是正确的假设有什么东西在那里,处理相对路径吗?猜猜我会去看看。 – behindthefall 2009-07-13 01:37:36

+0

:)刚更新了相对路径的答案。 – ars 2009-07-13 01:51:17

+0

谢谢! os.path.abspath('path')吸引我。这种东西可以带走所有的不确定性,我不必输入任何东西。 – behindthefall 2009-07-13 02:09:32

0

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

0
os.chdir(my_dir) 

os.chdir(os.getcwd()) 
相关问题