我想看看在python中确定当前脚本目录的最佳方法是什么?
我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.
这是一些问题:
__file__如果脚本执行时未定义exec,execfile__module__ 仅在模块中定义用例:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.
最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().
任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.
如果我有一个文件路径,如...
/home/smith/Desktop/Test
/home/smith/Desktop/Test/
Run Code Online (Sandbox Code Playgroud)
如何更改字符串以使其成为父目录?
例如
/home/smith/Desktop
/home/smith/Desktop/
Run Code Online (Sandbox Code Playgroud) 我有一个文件夹结构如下:
mydomain.com
->Folder-A
->Folder-B
Run Code Online (Sandbox Code Playgroud)
我有一个来自Database的字符串'../Folder-B/image1.jpg',它指向Folder-B中的图像.
在Folder-A的脚本里面,我使用dirname(FILE)来获取文件名,我得到了
mydomain.com/Folder-A.在这个脚本里面,我需要得到一个字符串'mydomain.com/Folder-B/image1.jpg.我试过了
$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';
Run Code Online (Sandbox Code Playgroud)
这显示为 mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
这是一个Facebook分享按钮,这无法获取正确的图像.任何人都知道如何正确地获得路径?
编辑:我希望得到一个网址>>> mydomain.com%2FFolder-B%2Fimage1.jpg
假设我有一个文件/from/here/to/there.txt,并且只想获取其dirname的最后一部分to而不是/from/here/to,我该怎么办?
我遇到的唯一解决方案是使用正则表达式并递归替换第一个目录,直到得到一个没有斜杠的单词.
gsub("/\\w*/","/",gsub("/\\w*/","/",getwd()))
Run Code Online (Sandbox Code Playgroud)
有什么稍微优雅的吗?(而且更便携?)
我的剧本:
#!/usr/bin/env bash
PATH=/home/user/example/foo/bar
mkdir -p /tmp/backup$PATH
Run Code Online (Sandbox Code Playgroud)
现在我想获得"$ PATH"的第一个文件夹:/ home /
cd /tmp/backup
rm -rf ./home/
cd - > /dev/null
Run Code Online (Sandbox Code Playgroud)
如何像上面的示例一样始终检测第一个文件夹?"dirname $ PATH"只返回"/ home/user/example/foo /".
提前致谢!:)
我想创建一个简单的bash脚本来在OS X上启动Java程序.文件名,文件路径和直接工作文件夹都包含空格.当我这样做:
#!/bin/sh
cd `dirname $0`
Run Code Online (Sandbox Code Playgroud)
我明白了
usage: dirname path
Run Code Online (Sandbox Code Playgroud)
我也试过把报价放在各种不同的地方.最精细的例子是
cd "`dirname \"$0\"`"
Run Code Online (Sandbox Code Playgroud)
没有任何效果.我要么得到错误消息,要么得到神秘的"用法:dirname路径"消息.
可能有哪些其他方法可行?
编辑:对于除了我以外的任何人来说,这似乎不是问题所以它必须只是我的盒子.我将在下面接受我自己的帖子,因为它是解决这个特定问题的唯一解决方案.但是,我肯定赞同那些似乎对其他人都有效的解决方案,非常感谢大家的帮助.
说我有一个符号链接从'/one/directory/'到'/two/directory/'.
如果我echo dirname(dirname(\__FILE__)),它返回'/one/directory/'.
返回的最佳方法是'/two/directory'什么?
用法示例:
Vhost 'example.com'指向`'/ two/directory'
example.com/hello_world.php
Run Code Online (Sandbox Code Playgroud)<?php echo dirname(dirname(__FILE__)); ?>
返回: '/one/directory'
预期成绩: '/two/directory'
我发现自己需要在源树中获取python文件的父目录,该源目录树是多个目录,具有一定的规律性.不得不多次打电话给dirname是笨重的.
我环顾四周,很惊讶没有发现这个帖子.
一般情况是:
import os.path as op
third_degree_parent = op.dirname(op.dirname(op.dirname(op.realpath(__file__))))
Run Code Online (Sandbox Code Playgroud)
是否有更惯用的方法来执行此操作,不需要嵌套的dirname调用?
我的许多同事在他们的BEGIN块中使用以下命令.
$scriptDir = dirname($0);
chdir($scriptDir);
$scriptDir = getcwd();
Run Code Online (Sandbox Code Playgroud)
我环顾四周,不禁认为第三条线$scriptDir = getcwd();是多余的.因为我们已经有了$scriptDir = dirname($0);.Am的scriptdir,我在这里遗漏了什么?