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

时间:2010-01-13 13:51:09

标签: python path

我的路径中有一点问题。

此代码示例创建了一些名为“〜/ some_dir”的目录,并且不明白我想在我的主目录中创建some_dir。

my_dir = "~/some_dir"
if not os.path.exists(my_dir):
    os.makedirs(my_dir)

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

5 个答案:

答案 0 :(得分:207)

您需要手动展开代字号:

my_dir = os.path.expanduser('~/some_dir')

答案 1 :(得分:62)

~/some_dir$HOME/some_dir的转换称为tilde expansion,是一种常见的用户界面功能。文件系统对此一无所知。

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

my_dir = os.path.expanduser("~/some_dir")

答案 2 :(得分:13)

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

homedir = os.path.expanduser('~')

答案 3 :(得分:0)

from srblib import verify_folder

verify_folder('path/to/folder')

它将创建一个文件夹,否则将不会创建文件夹。

注意:它还将在路径中创建文件夹(如果需要)

srb@srb-pc:~/hello$ ls
srb@srb-pc:~/hello$ python3 
>>> from srblib import verify_folder
>>> verify_folder('~/hello/A/B')
>>> exit()
srb@srb-pc:~/hello$ ls
A
srb@srb-pc:~/hello$ ls A
B
srb@srb-pc:~/hello$ 

此功能类似于mkdir -p path/to/folder

答案 4 :(得分:0)

您现在可以这样做

from srbib import abs_path
my_dir = abs_path('~/path/to/dir')
if not os.path.exists(my_dir):
    os.makedirs(my_dir)

有关srblib.abs_path的用法,请参考https://stackoverflow.com/a/54190233/6799074