gpt4 book ai didi

python - 如何使用 pathlib.Path.expanduser() 并修改和使用 PosixPath 值?

转载 作者:行者123 更新时间:2023-12-04 00:25:34 29 4
gpt4 key购买 nike

下面显示了我如何获得 user1 的主目录,创建一个新的子目录名称并通过 python 3.6 的 os 创建一个新的子目录。模块。

>>> import os.path
>>> import os
>>> a = os.path.expanduser('~')
>>> a
'/home/user1'
>>> a_sub_dir = a + '/Sub_Dir_1'
>>> a_sub_dir
'/home/user1/Sub_Dir_1'
>>> def create_sub_dir( sub_dir ):
try:
os.makedirs( sub_dir, mode=0o777, exist_ok=False )
except FileExistsError:
print('Sub_directory already exist, no action taken.')
else:
print('Created sub_directory.')
>>> create_sub_dir( a_sub_dir )
Created sub_directory.
>>> create_sub_dir( a_sub_dir )
Sub_directory already exist, no action taken.

我想通过 python 3.6 的 pathlib 实现与上述相同的功能模块。但是,我似乎无法让它工作(见下文)。我的问题:
  • 如何使用 Path.expanduser() ?
  • 如何修改信息PosixPath(......)因为它不是一个字符串,所以我可以重用它?
  • 我想修改 PosixPath 并在我的make_sub_dir()功能。它会起作用吗?目前,我明确
    定义了我要创建的新子目录以检查我的make_sub_dir()功能有效。

  • 感谢有关如何使用 pathlib 的指导。提前致谢。
    >>> from pathlib import Path
    >>> b = Path.expanduser('~')
    Traceback (most recent call last):
    File "<pyshell#87>", line 1, in <module>
    b = Path.expanduser('~')
    File "/usr/lib/python3.6/pathlib.py", line 1438, in expanduser
    if (not (self._drv or self._root) and
    AttributeError: 'str' object has no attribute '_drv'
    >>> b = Path.expanduser('~/')
    Traceback (most recent call last):
    File "<pyshell#88>", line 1, in <module>
    b = Path.expanduser('~/')
    File "/usr/lib/python3.6/pathlib.py", line 1438, in expanduser
    if (not (self._drv or self._root) and
    AttributeError: 'str' object has no attribute '_drv'
    >>> b = Path.home()
    >>> b
    PosixPath('/home/user1')
    >>> b_sub_dir = b + '/Sub_Dir_1'
    Traceback (most recent call last):
    File "<pyshell#91>", line 1, in <module>
    b_sub_dir = b + '/Sub_Dir_1'
    TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'
    >>> def make_sub_dir( sub_dir ):
    try:
    Path(sub_dir).mkdir(mode=0o777, parents=False, exist_ok=False)
    except FileNotFoundError:
    print('Parent directory do not exist, no action taken.')
    except FileExistsError:
    print('Sub_directory already exist, no action taken.')
    else:
    print('Created sub_directory.')
    >>> make_sub_dir( '/home/user1/Sub_Dir_1' )
    Sub_directory already exist, no action taken.
    >>> make_sub_dir( '/home/user1/Sub_Dir_1' )
    Created sub_directory.
    >>> make_sub_dir( '/home/user1/Sub_Dir_1' )
    Sub_directory already exist, no action taken.

    最佳答案

    pathlib expanduser os.path 中的工作方式不同: 它适用于 Path对象并且不接受任何参数。如文档中所示,您可以使用:

    >>> from pathlib import Path
    >>> p = Path('~/films/Monty Python')
    >>> p.expanduser()
    PosixPath('/home/eric/films/Monty Python')
    或与 .home() 合作:
    >>> form pathlib import Path
    >>> Path.home()
    PosixPath('/home/antoine')
    那么为了 join directories你应该使用 / (而不是 + ):
    b_sub_dir = b / 'Sub_Dir_1'

    关于python - 如何使用 pathlib.Path.expanduser() 并修改和使用 PosixPath 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248819/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com