python的os.makedirs不理解我的路径中的”~”。

Python's os.makedirs doesn't understand “~” in my path

在我的道路上我有点问题。

这个代码示例创建了一些名为"~/some_dir"的目录,不理解我想在主目录中创建一些_dir。

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

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


您需要手动展开颚化符:

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

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

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

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


这可能是因为python不是bash,不遵循相同的约定。您可以使用:

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

你现在可以这样做了

1
2
3
4
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。


1
2
3
from srblib import verify_folder

verify_folder('path/to/folder')

它将创建一个文件夹,如果没有其他文件夹,它将不创建文件夹。

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

1
2
3
4
5
6
7
8
9
10
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类似。