Python的os.makedirs在我的路径中不理解"〜"

Joh*_*han 137 python path

在我的路上,我有一点问题.

这个代码示例创建了一些名为"〜/ some_dir"的目录,并且不明白我想在我的主目录中创建some_dir.

my_dir = "~/some_dir"
if not os.path.exists(my_dir):
    os.makedirs(my_dir)
Run Code Online (Sandbox Code Playgroud)

请注意,这是基于Linux的系统.

Sil*_*ost 242

您需要手动展开代字号:

my_dir = os.path.expanduser('~/some_dir')
Run Code Online (Sandbox Code Playgroud)

  • @HappyMittal 对于其他想知道的人,您可以简单地使用“./”来引用当前目录,从而使用“./~”来删除当前目录中的文件夹“~”。为了更安全,最简单的方法是简单地提供完整路径:`rm -rf path/to/bad/dir/~`。 (3认同)

dda*_*daa 65

~/some_dirto 的转换$HOME/some_dir称为代字号扩展,是一种常见的用户界面功能.文件系统对此一无所知.

在Python中,此功能由os.path.expanduser实现:

my_dir = os.path.expanduser("~/some_dir")
Run Code Online (Sandbox Code Playgroud)

  • 请注意,即使在使用"./〜"表示法进行波浪形扩展时,一个CAN也可以访问当前目录中名为"〜"的文件/目录.这是因为〜扩展仅发生在文件名的开头.对于以" - "开头的文件名或由命令行界面专门处理的其他字符,它也是一个方便的hack.你可以说我可能已经做了太多的shell脚本黑客攻击. (6认同)

gru*_*czy 15

这可能是因为Python不是Bash并且不遵循相同的约定.你可以用这个:

homedir = os.path.expanduser('~')
Run Code Online (Sandbox Code Playgroud)