我在Windows上运行Ruby,虽然我不知道这是否有什么不同。我所要做的就是获取当前工作目录的绝对路径。这可能从irb吗?显然,在脚本中可以使用File.expand_path(__FILE__)

但是从irb,我尝试了以下,得到了一个“权限被拒绝”错误:

File.new(Dir.new(".").path).expand

我在Windows上运行Ruby,虽然我不知道这是否有什么不同。我所要做的就是获取当前工作目录的绝对路径。这可能从irb吗?显然,在脚本中可以使用File.expand_path(__FILE__)

但是从irb,我尝试了以下,得到了一个“权限被拒绝”错误:

File.new(Dir.new(".").path).expand

首先,我看到这个话题,但我不能理解。

问题:

在“D:\path\to\file.bat”目录下有一个批处理文件,内容如下:

echo %cd%
pause

输出为:

C:\

必须是D:\path\to

我做错了什么?

我想知道在Python中确定当前脚本目录的最佳方法是什么。

我发现,由于调用Python代码的方法很多,很难找到一个好的解决方案。

以下是一些问题:

如果脚本使用exec, execfile执行,则__file__未定义 __module__只在模块中定义

用例:

。/ myfile.py python myfile.py / somedir / myfile.py python somedir / myfile.py Execfile ('myfile.py')(来自另一个脚本,可以位于另一个目录,并且可以有另一个当前目录。

我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法。

最常用的方法是os.path.dirname(os.path.abspath(__file__)),但如果你用exec()从另一个脚本执行脚本,这就行不通了。

警告

任何使用当前目录的解决方案都会失败,这可以根据脚本调用的方式有所不同,也可以在运行的脚本中更改。

除了process.cwd()之外,是否有其他方法来获取当前项目根目录的路径名。Node是否实现了ruby的属性Rails.root之类的东西。我要找的是稳定可靠的东西。

如何在Python中设置当前工作目录?