gpt4 book ai didi

python - os.makedirs 错误地捕获 macOS 上目录的无扩展名文件

转载 作者:行者123 更新时间:2023-12-03 19:20:40 26 4
gpt4 key购买 nike

我正在尝试创建与文件同名的目录。有一个文件:readme它没有扩展名。它被夹在 os.makedirs(directory) 中声称该文件存在。

source = "Users/me/Desktop/parent"
dirpaths = ['readme', 'index', 'robots']

def func(directory,source=source):
directory = os.path.join(source,directory) #
os.makedirs(directory)

a = [func(directory) for directory in dirpaths]
>>> FileExistsError: [Errno 17] File exists: '/Users/me/Desktop/parent/readme'
我将带有 # 的行更改为:
directory = os.path.join(source,directory+"/")
>>> NotADirectoryError: [Errno 20] Not a directory: '/Users/me/Desktop/parent/readme/'
当存在同名的无扩展名文件时,如何创建目录?
python 3.7.3
事实证明,macOS 将目录和无扩展名文件视为相同。我尝试移动名为 readme 的文件夹至 parent但它拒绝了。
enter image description here
os.path.isfile(source + "/" + "readme") 
True
os.path.isfile(source + "/" + "readme/")
False
os.path.isdir(source + "/" + "readme/")
False
os.path.isdir(source + "/" + "readme")
False
如果这里有区别,它也可以用于创建吗?

最佳答案

目录只是特殊类型的文件。具体来说,它们只是 file mode bits 所在的文件。表明该文件是一个目录(参见位掩码 stat.S_ISDIR )。例如,作为八进制数的目录模式通常可能是 0o40755和一个常规文件 0o100644 .

在大多数文件系统(包括 macOS)上,同一目录中可能没有目录和同名的常规文件,也可能没有包含路径分隔符的文件名。这与对象存储形成对比,例如 s3 ,这实际上不是一个文件系统。

亲眼看看,同样的inode无论您是否指定尾部斜杠,都会采用:

>>> import os
>>> os.makedirs("./example")
>>> os.stat('./example/').st_ino == os.stat('./example').st_ino
True

关于python - os.makedirs 错误地捕获 macOS 上目录的无扩展名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59353082/

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