在设置位置创建不可见的文件夹

时间:2017-12-22 05:13:58

标签: python python-3.x file hide glob

我正在尝试在我的电脑上创建隐形文件夹。

问题是如果我的子文件夹被删除,它就不会更新。

如果我想添加新文件夹,除非每次都删除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

2 个答案:

答案 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']

希望有所帮助。