2017-12-22 8 views
0

Ich versuche, unsichtbare Ordner auf meinem PC zu erstellen.Erstellen unsichtbarer Ordner an einem bestimmten Ort

Das Problem ist, wenn mein Unterordner gelöscht wird, wird es nicht aktualisiert.

Wenn ich neue Ordner hinzufügen möchte, wird es nicht aktualisiert, es sei denn, ich lösche C:/TVBA jedes Mal, die nicht sicher ist.

Es erstellt auch unsichtbare Ordner, in denen sich mein Python-Skript befindet und unter C:/TVBA.

Wie behebe ich das?

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 

Antwort

0

Es hat unsichtbare Ordner in Ihrem aktuellen Ordner erstellt, weil Sie ctypes.windll.kernel32.SetFileAttributesW() den erforderlichen Pfad nicht übergeben haben. Meine Python-Version ist 3.6 und ich habe den Code unten versucht unter 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) 

Nach den obigen Code ausgeführt wird, die Unterordner in rootpath sind:

>>> os.listdir(rootpath) 
['2', '3', '4', '5', '6', 'newsub'] 

Hoffnung, das hilft.

0

Verwenden Sie os.makedirs. Relevante Dokumentation ist

„os.makedirs

Signatur:? Os.makedirs (Name, mode = 511, exist_ok = False) Docstring: makedirs (name [, mode = 0o777] [, exist_ok = False ])

ein Blatt Verzeichnis und alle Zwischen schaffen. funktioniert wie mkdir, mit der Ausnahme, dass jedes Zwischenpfadsegment (nicht nur die am weitesten rechts) wird, wenn es existiert nicht erstellt werden. wenn das Zielverzeichnis bereits vorhanden ist, einen OSError auslösen, wenn exist_ok False ist, ansonsten keine Ausnahme ausgelöst sein ist rekursiv. "

+0

Können Sie mit Beispiel zeigen? –

Verwandte Themen