标签: dirname

如何正确确定当前脚本目录?

我想看看在python中确定当前脚本目录的最佳方法是什么?

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

这是一些问题:

  • __file__如果脚本执行时未定义exec,execfile
  • __module__ 仅在模块中定义

用例:

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

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

最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().

警告

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

python pythonpath dirname

229
推荐指数
8
解决办法
10万
查看次数

在Bash中获取目录的父级

如果我有一个文件路径,如...

/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)

directory bash dirname

183
推荐指数
7
解决办法
16万
查看次数

php如何在dirname上升级一级(__ FILE__)

我有一个文件夹结构如下:

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

php dirname

66
推荐指数
5
解决办法
9万
查看次数

如何在Bash中获取dirname的最后一部分

假设我有一个文件/from/here/to/there.txt,并且只想获取其dirname的最后一部分to而不是/from/here/to,我该怎么办?

bash shell dirname

65
推荐指数
5
解决办法
7万
查看次数

如何确定R中的当前目录名?

我遇到的唯一解决方案是使用正则表达式并递归替换第一个目录,直到得到一个没有斜杠的单词.

gsub("/\\w*/","/",gsub("/\\w*/","/",getwd()))
Run Code Online (Sandbox Code Playgroud)

有什么稍微优雅的吗?(而且更便携?)

command r dirname

20
推荐指数
2
解决办法
1万
查看次数

如何在bash中获取给定路径的根目录?

我的剧本:

    #!/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 /".

提前致谢!:)

directory bash path dirname

14
推荐指数
3
解决办法
3万
查看次数

OS X bash:dirname

我想创建一个简单的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路径"消息.

可能有哪些其他方法可行?


编辑:对于除了我以外的任何人来说,这似乎不是问题所以它必须只是我的盒子.我将在下面接受我自己的帖子,因为它是解决这个特定问题的唯一解决方案.但是,我肯定赞同那些似乎对其他人都有效的解决方案,非常感谢大家的帮助.

macos bash dirname

9
推荐指数
3
解决办法
1万
查看次数

PHP dirname返回符号链接路径

说我有一个符号链接从'/one/directory/'到'/two/directory/'.

如果我echo dirname(dirname(\__FILE__)),它返回'/one/directory/'.

返回的最佳方法是'/two/directory'什么?

用法示例:

Vhost 'example.com'指向`'/ two/directory'

example.com/hello_world.php

<?php 
    echo dirname(dirname(__FILE__));
?>
Run Code Online (Sandbox Code Playgroud)

返回: '/one/directory'

预期成绩: '/two/directory'

php symlink dirname

8
推荐指数
2
解决办法
1万
查看次数

Python习惯用法可以多次调用os.path.dirname获得相同的结果吗?

我发现自己需要在源树中获取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调用?

python build filepath dirname os.path

7
推荐指数
3
解决办法
1448
查看次数

更改为目录然后getcwd()

我的许多同事在他们的BEGIN块中使用以下命令.

$scriptDir = dirname($0);
chdir($scriptDir);
$scriptDir =  getcwd();
Run Code Online (Sandbox Code Playgroud)

我环顾四周,不禁认为第三条线$scriptDir = getcwd();是多余的.因为我们已经有了$scriptDir = dirname($0);.Am的scriptdir,我在这里遗漏了什么?

perl dirname getcwd

7
推荐指数
1
解决办法
310
查看次数

标签 统计

dirname ×10

bash ×4

directory ×2

php ×2

python ×2

build ×1

command ×1

filepath ×1

getcwd ×1

macos ×1

os.path ×1

path ×1

perl ×1

pythonpath ×1

r ×1

shell ×1

symlink ×1