如何让Python脚本(cygwin)在当前(或相对)目录中工作?

如何让Python脚本(cygwin)在当前(或相对)目录中工作?,python,filesystems,cygwin,path,utilities,Python,Filesystems,Cygwin,Path,Utilities,我有很多目录,其中包含使用(g)vim编写的文本文件,我还编写了一些在Python中很有用的实用程序。我用pound-bang-/usr/bin/env python行启动实用程序,以便使用安装在cygwin下的python。我想键入如下命令: %cd~/SomeBook %哪个蟒蛇 /usr/local/bin/pythonUtil %pythonUtil./infle.txt./outfile.txt (或%pythonUtil someRelPath/infie.txt somePossi

我有很多目录,其中包含使用(g)vim编写的文本文件,我还编写了一些在Python中很有用的实用程序。我用pound-bang-/usr/bin/env python行启动实用程序,以便使用安装在cygwin下的python。我想键入如下命令:

%cd~/SomeBook

%哪个蟒蛇

/usr/local/bin/pythonUtil

%pythonUtil./infle.txt./outfile.txt

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

pythonUtil:findle.txt;编写outfile.txt;完成(或类似的,如果有的话)

然而,我的pythonUtil程序一直告诉我他们找不到infie.txt。如果我将实用程序复制到当前的工作目录中,一切正常,但是我的实用程序的副本散落在整个环境中。我该怎么办

还有一个编辑:总结一下---我想要的是os.path.abspath('filename')。它以字符串形式返回绝对路径名,然后消除所有歧义

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

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

备注:不要在cygwin命令行的WinXP路径中使用“\”作为分隔符;使用“/”并信任蛇。不知道为什么,但可能会删除一些分隔符,并修改路径以包含额外的级别,例如“Documents and Settings\someUser”和其他Windows应用程序

感谢响应者把我推到了正确的方向。

看看os.getcwd:

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

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

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))
请看os.getcwd:

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

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

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))

键入“ls”时会发生什么?您看到这里列出的“infle.txt”了吗?

当您键入“ls”时会发生什么?你看到上面列出的“infle.txt”了吗

os.chdir(my_dir)


伟大的头脑。。。我认为里面也有处理相对路径的东西,对吗?我想我去看看。谢谢!abspath(“path”)对我很有吸引力。有点消除了所有的不确定性,我不必键入任何东西。嘿,嘿:拿着这个,你这个又大又丑,一个驱动器和七个目录深的cygwin在XP绝对路径中,你。我猜你得到了“答案奖”!伟大的头脑。。。我认为里面也有处理相对路径的东西,对吗?我想我去看看。谢谢!abspath(“path”)对我很有吸引力。有点消除了所有的不确定性,我不必键入任何东西。嘿,嘿:拿着这个,你这个又大又丑,一个驱动器和七个目录深的cygwin在XP绝对路径中,你。我猜你得到了“答案奖”!对文本文件实际上位于,例如,~/SomeBook目录中。(如果不是的话,我会很难过!)是的。文本文件实际上位于,例如,~/SomeBook目录中。(如果他们不这样做,我会很不高兴!)这是否解决了相对路径的问题?这是否解决了相对路径的问题?