我正在尝试在我的电脑上创建隐形文件夹。
问题是如果我的子文件夹被删除,它就不会更新。
如果我想添加新文件夹,除非每次都删除C:/ TVBA,否则不会更新。
它还会创建我的python脚本所在的隐藏文件夹,位于C:/TVBA
。
我该如何解决这个问题?
try:
rootpath = r'C:/TVBA'
os.mkdir(rootpath)
os.chdir(rootpath)
except OSError:
pass
for sub_folder in ['1', '2', '3', '4', '5', '6']:
try:
os.mkdir(sub_folder)
ctypes.windll.kernel32.SetFileAttributesW(sub_folder, 2)
except OSError:
pass
答案 0 :(得分:0)
使用os.makedirs。相关文档是
“os.makedirs?
签名:os.makedirs(name,mode = 511,exist_ok = False) 文档字符串: makedirs(name [,mode = 0o777] [,exist_ok = False])
创建一个叶子目录和所有中间目录。像 mkdir,除了任何中间路径段(不仅仅是最右边的) 如果它不存在,将被创建。如果目标目录已经存在 存在,如果exist_ok为False则引发OSError。否则没有例外 提高。这是递归的。“
答案 1 :(得分:0)
它在当前文件夹中创建了不可见的文件夹,因为您没有传递ctypes.windll.kernel32.SetFileAttributesW()
所需的路径。我的Python版本是3.6,我在Windows 10上尝试过以下代码:
import os
import ctypes
# Create a folder, make sub_folders in it and hide them
try:
rootpath = "path/to/folder"
os.mkdir(rootpath)
except OSError as e:
print(e) # So you'll know what the error is
for subfolder in ['1', '2', '3', '4', '5', '6']:
try:
path = rootpath + "/" + subfolder # Note, full path to the subfolder
os.mkdir(path)
ctypes.windll.kernel32.SetFileAttributesW(path, 2) # Hide folder
except OSError as e:
print(e)
# Remove a subfolder
os.rmdir(rootpath + "/" + "1")
# Add a new sub_folder
path = rootpath + "/" + "newsub"
os.mkdir(path)
# Hide the above newsub
ctypes.windll.kernel32.SetFileAttributesW(path, 2)
# Unhide all the sub-folders in rootpath
subfolders = os.listdir(rootpath)
for sub in subfolders:
ctypes.windll.kernel32.SetFileAttributesW(rootpath + "/" + sub, 1)
运行上述代码后,rootpath
中的子文件夹为:
>>> os.listdir(rootpath)
['2', '3', '4', '5', '6', 'newsub']
希望有所帮助。