Python os.mkdir成功,但C:\Users\<;中未显示任何目录;用户>;
非常简单的脚本来演示这种奇怪的现象:Python os.mkdir成功,但C:\Users\<;中未显示任何目录;用户>;,python,python-3.x,windows,Python,Python 3.x,Windows,非常简单的脚本来演示这种奇怪的现象: import os root = input('Where to save?: ') top = os.path.join(root, 'toplevel') os.mkdir(top) for i in range(10): os.mkdir(os.path.join(top, str(i))) 出现提示时,root值为C:\Users\joe1234,然后运行;但是,资源管理器中只显示C:\Users\joe1234\toplevel,而
import os
root = input('Where to save?: ')
top = os.path.join(root, 'toplevel')
os.mkdir(top)
for i in range(10):
os.mkdir(os.path.join(top, str(i)))
出现提示时,root
值为C:\Users\joe1234
,然后运行;但是,资源管理器中只显示C:\Users\joe1234\toplevel
,而不显示子目录
为了进一步增加复杂性,当我使用相同的输入再次运行脚本时,我得到:
FileExistError:[WinError 183]无法创建已存在的文件:“C:\Users\joe1234\toplevel”`
隐藏文件已启用,使用带有隐藏属性的dir
不会显示任何内容。当输入仅仅是C:\
或C:\
下的任何其他目录,仅在C:\Users
下的目录中时,不会发生此问题
我使用的是CPython 3.6.0,我使用的是Windows 10.0.18363 Build 18363您遇到了两个独立的问题
1. <代码>文件存在错误
当您使用相同的输入再次运行脚本时,脚本将调用os.mkdir(top)
,其中top='C:\\Users\\joe1234\\toplevel'
,但此文件夹已存在(第一次运行后)。如os.mkdir
中所述,当文件夹已经存在时,它会引发fileexisterror
因此,如果您要删除toplevel
文件夹,则不会获得fileexisterror
您还可以通过两种方式更改脚本以避免出现此错误:
# (a) check if folder already exists
if not os.path.exists(path):
os.mkdir(path)
# (b) use try/catch
try:
os.mkdir(path)
except FileExistsError:
pass
2.不显示子目录
这个问题当然在于环境,而不是python本身。不幸的是,我只能猜测为什么不创建子目录
通常这些奇怪的问题与抗病毒药物的使用有关。看看这个。Comodo antivirus会自动将“可疑”的python进程放入虚拟(隔离)环境,如沙箱,因此文件夹实际上是在其他地方创建的。稍微无关,但更简单的方法是使用
os.path.expanduser()
自动查找用户目录路径(比您的输入功能更简单)
对于您的问题,您可能会收到一个
文件existserror
,因为您可能忘记删除您的~/toplevel/
目录。第二次运行此操作时,将已经有一个toplevel目录,因此如果您希望再次成功运行此操作,则需要删除该目录。您可能需要使用绝对paths(abspath)确保将文件发送到何处。这可能是权限问题吗?因为它是用户directory@MaxwellRedacted如果我是userjoe1234
,它不应该是;另外,将抛出docs statePermissionError
。此外,如果我从空闲运行os.mkdir
,将创建目录仅当通过命令行运行解释器并指定脚本时,才会出现此问题。这意味着文件夹已成功创建,文件资源管理器的问题是没有显示更新的文件系统。要再次检查,可以打开cmd line窗口并使用dir命令显示目标文件的内容folder@pstatix嘿,伙计,你不应该这样回答,我是来帮助你的。作为linux上的参考,我怀疑这是python代码本身,除非python中有bug
import os
dir_ = os.path.expanduser("~/toplevel")
os.mkdir(dir_)
for i in range(10):
os.mkdir(os.path.join(dir_, str(i)))