Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从相对路径确定绝对路径_Python_Perl - Fatal编程技术网

Python 从相对路径确定绝对路径

Python 从相对路径确定绝对路径,python,perl,Python,Perl,我想在perl脚本中将相对路径转换为绝对路径。我的理解是,File::Spec->rel2abs将能够优雅地处理它,但是在下面的场景中,我没有得到预期的结果 c:\Temp>cat test.pl use File::Spec; print File::Spec->rel2abs($ENV{'VS100COMNTOOLS'} . '../../VC/bin/vsvars32.bat'); c:\Temp>perl test.pl C:\Program Files (x86)\

我想在perl脚本中将相对路径转换为绝对路径。我的理解是,
File::Spec->rel2abs
将能够优雅地处理它,但是在下面的场景中,我没有得到预期的结果

c:\Temp>cat test.pl
use File::Spec;
print File::Spec->rel2abs($ENV{'VS100COMNTOOLS'} . '../../VC/bin/vsvars32.bat');

c:\Temp>perl test.pl
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\..\..\VC\bin\vsvars32.bat
我期待着类似的事情

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vsvars32.bat
Perl版本v5.6.1为MSWin32-x86-multi-thread(ActiveState公司)构建

为了更清楚,我想获得类似于以下Python代码的东西

>>> os.path.abspath(os.path.join(os.environ['VS110COMNTOOLS'], r'..\..\VC\bin\vsvars32.bat'))
'C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin\\vsvars32.bat'

File::Spec->rel2abs
在Perl 5.16上适用。如果可能的话,可以升级您的Perl版本,因为5.6已经有10年的历史了

作为替代方法,请尝试安装并使用
Path::Class

use Path::Class;
print file($path)->absolute;
:

(示例直接取自文档)

但是,您肯定应该升级Perl。Perl 5.6.1实际上是12年前发布的。从那时起,语言和Windows支持都有了很大的进步

use Cwd 'abs_path';
my $abs_path = abs_path($file);