Viac

Iterujte cez priečinky v priečinkoch

Iterujte cez priečinky v priečinkoch


Mám problémy s vytvorením modelu, ktorý bude iterovať prostredníctvom priečinkov a podpriečinkov. Chcem mať možnosť mať ako parameter priečinok najvyššej úrovne a potom nechať kód prejsť každým z podpriečinkov a dokončiť akciu.

Mám pracovný kód pre akciu, ktorú chcem dokončiť, a som schopný vytvoriť iteráciu na prechod cez jeden priečinok, ale chcem mať možnosť prejsť 18 priečinkami a spustiť svoj skript na každom .mxd v každom priečinku.

Tu je model, ktorý beží v jednom priečinku.

Chcem, aby to bežalo cez 18 priečinkov, ktoré mám.

Nejaké nápady? Môžem to spustiť ako model alebo ako skript.


Tu je postup, ako nájsť všetky mxds v adresárovom strome pomocou modulu os:

import os pre root, dirs, súbory v os.walk ('C:/junk'): pre súbor v súboroch: if os.path.splitext (súbor) [1] == '.mxd': print 'Je to MXD! '

VBA slučka cez všetky súbory v priečinku pomocou File System Object (FSO) a vstavanej funkcie Dir (). VBA pre každý súbor v priečinku makro nám pomáha prechádzať všetkými súbormi v adresári. V tomto tutoriáli prechádzame priečinkom a uvádzame zoznam všetkých dostupných súborov v priečinku pomocou metódy FSO pre skorú a neskorú väzbu a funkcie Dir ().

Na použitie objektovej knižnice FSO existujú dva prístupy.
1. Včasná väzba
2. Neskorá väzba

Vytvorte zoznam všetkých súborov v priečinku pomocou funkcie Dir () v programe Excel VBA

Pozrime sa na ukážkové makro vo VBA Zoznam všetkých súborov v priečinku pomocou funkcie Dir (). V dôsledku toho zobrazí výstup v bezprostrednom okne.

Prehliadajte všetky súbory v priečinku pomocou funkcie FSO – Early Binding v programe Excel VBA

Pozrime sa na príklad VBA Prehliadajte všetky súbory v priečinku pomocou včasnej väzby FSO –.

Poznámka: Ak sa pri spustení vyššie uvedeného makra vyskytne chyba, pridajte odkaz na knižnicu FSO podľa nižšie uvedených pokynov.

Pridajte odkaz na včasnú väzbu

Tu sú pokyny na pridanie včasnej záväznej referencie.

  • Prejdite do ponuky Nástroje z ponuky VBE.
  • Kliknite na referencie z dostupných možností.
  • Skontrolujte skriptovací modul runtime spoločnosti Microsoft.
  • Kliknite na OK.
  • Ako referenciu nájdete nižšie uvedenú snímku obrazovky.

Vytvorte zoznam všetkých súborov v priečinku pomocou neskoršej väzby FSO – v programe Excel VBA

Pozrime sa na príklad slučky VBA cez všetky súbory v priečinku pomocou neskorej väzby FSO –.

Výkon: Tu je výstupná snímka postupu makra uvedeného vyššie.


Alternatívy

Alternatívny príkaz na zoznam priečinkov a podpriečinkov zodpovedajúcich zástupným znakom je DIR:
C: & gt dir /b /s /a: d & & quot; C: Work reports*& quot

Aby sme sa programovo prepli do každého priečinka, môžeme to zabaliť do príkazu FOR /F:
C: & gt for /f & quottokens =*& quot %G v ('dir /b /s /a: d & quotC: Work reports*& quot') do echo Found %G

alebo to isté v dávkovom súbore, pričom %sa zdvojnásobí:
for /f & quottokens =*& quot %% G in ('dir /b /s /a: d & quotC: Work reports*& quot') do echo Found %% G


Ako to upravím tak, aby zodpovedali mojim konkrétnym potrebám?

Je pravdepodobné, že vám tento príspevok neposkytol presnú odpoveď, ktorú ste hľadali. Všetci máme rôzne situácie a nie je možné zodpovedať každú konkrétnu potrebu, ktorú by mohol mať. Preto sa s vami chcem podeliť: Môj sprievodca k RÝCHLEMU vyriešeniu vašich problémov! V tomto článku vysvetľujem najlepšie stratégie, s ktorými som za tie roky prišiel, na získanie rýchlych odpovedí na zložité problémy v aplikáciách Excel, PowerPoint, VBA, pomenujete to!

Vrelo odporúčam skontrolovať tento návod skôr, ako požiadate mňa alebo kohokoľvek iného v sekcii komentárov o vyriešenie vášho konkrétneho problému. Môžem zaručiť 9 -krát z 10, jedna z mojich stratégií vám poskytne potrebnú odpoveď rýchlejšie, než bude potrebné, aby som sa vám vrátil s možným riešením. Snažím sa všetkým pomôcť, ale niekedy nemám čas zodpovedať otázky všetkých (nikdy sa nezdá, že by bolo dosť hodín denne!).

Prajem vám veľa šťastia a dúfam, že vás tento návod zavedie správnym smerom!


Interaktívne mapovanie (GIS)

Geografický informačný systém Warren County alebo GIS je interaktívna mapová aplikácia, ktorá organizuje vrstvy informácií a zobrazuje ich v prehľadávateľnej databáze. Používatelia môžu hľadať podľa mena vlastníka nehnuteľnosti, adresy vlastníctva alebo identifikačného čísla balíka. Nasledujúce informácie sú verejne dostupné prostredníctvom GIS Warren County:

  • Aktuálne meno vlastníka nehnuteľnosti
  • Celková hodnota majetku (pozemok plus úpravy)
  • História stavby
  • Označenie zón
  • Výmera
  • Magistrátny obvod
  • Zónovanie školského okresu

Ak chcete navštíviť webovú stránku GIS kraja, kliknite sem: www.warrengis.org

K dispozícii je tiež množstvo prekryvných máp, vrátane, ale nielen: volebných okrskov, hygienických obvodov, miest na likvidáciu odpadu, umiestnení rôznych záchranných služieb a vládnych budov, umiestnení škôl okresu Warren, záplavových zón a mnohých ďalších.

Ďalším zdrojom, ktorý majú obyvatelia k dispozícii, je online zbierka existujúcich interaktívnych mapovacích aplikácií, ktoré sú skvelým spôsobom, ako nájsť zdroje v kraji a získať znalosti o plánoch, projektoch a príležitostiach v komunite. Každá aplikácia ponúka ďalšie funkcie, ako napríklad priame odkazy na webové stránky, fotografie a dokumenty, prostredníctvom interakcie s funkciami zobrazenými na mapách. V tejto zbierke sú momentálne k dispozícii nasledujúce mapy:

  • Warren County Recreation Guide (ponúka parky a vylodenia na lodi v rámci okresu, ako aj rekreačné oblasti a chodníky do 30 míľ od geografického centra okresu)
  • Mapa stavu všeobecného prehodnotenia 2019
  • Mapa „Nájdi svoju školu“
  • Mapa miest sanitárnej oblasti

Ak chcete získať prístup k tejto zbierke interaktívnych máp, kliknite na obrázok nižšie.

Ak chcete získať ďalšie informácie o lokalitách GIS Warren County, kontaktujte kanceláriu GIS prostredníctvom oddelenia plánovania a zónovania na čísle (540) 636-3354.


Alternatívny spôsob

Spoločnosť Microsoft ponúkla v tomto starom článku vlastné riešenie, ktoré ponúka zaujímavý iteračný prístup.

Vyššie uvedenú metódu som mierne upravil tak, aby zahŕňala aj súbory bezprostredne v rodičovskom adresári. Riešenie Microsoft#8217s to v súčasnej dobe nerobí

Nasledujúci kód pridá všetky cesty k súborom do zoznamu. Ak chcete robiť niečo iné, musíte zmeniť to, čo sa deje v DoAction (). Možno budete chcieť dať DoAction aj rozumnejší názov, v závislosti od toho, čo robíte.


Ako: Vytvoriť zoznam adresárov a súborov

Početné kolekcie poskytujú lepší výkon ako polia, keď pracujete s veľkými zbierkami adresárov a súborov. Ak chcete vytvoriť zoznam adresárov a súborov, použite metódy, ktoré vracajú vymenovateľnú zbierku názvov adresárov alebo súborov alebo ich objektov DirectoryInfo, FileInfo alebo FileSystemInfo.

Ak chcete vyhľadávať a vracať iba názvy adresárov alebo súborov, použite metódy enumerácie triedy Directory. Ak chcete vyhľadávať a vracať ďalšie vlastnosti adresárov alebo súborov, použite triedy DirectoryInfo a FileSystemInfo.

Vypočítateľné zbierky z týchto metód môžete použiť ako parameter IEnumerable & ltT & gt pre konštruktory tried zbierok, ako je napríklad List & ltT & gt.

Nasledujúca tabuľka sumarizuje metódy, ktoré vracajú početné zbierky súborov a adresárov:

Ak chcete hľadať a vrátiť sa Použite metódu
Názvy adresárov Directory.EnumerateDirectories
Informácie o adresári (DirectoryInfo) DirectoryInfo.EnumerateDirectories
Názvy súborov Directory.EnumerateFiles
Informácie o súbore (FileInfo) DirectoryInfo.EnumerateFiles
Názvy záznamov systému súborov Directory.EnumerateFileSystemEntries
Informácie o vstupe do systému súborov (FileSystemInfo) DirectoryInfo.EnumerateFileSystemInfos
Názvy adresárov a súborov Directory.EnumerateFileSystemEntries

Aj keď môžete okamžite vyčísliť všetky súbory v podadresároch nadradeného adresára pomocou možnosti AllDirectories voliteľného enumerácie SearchOption, chyby UnauthorizedAccessException môžu spôsobiť, že zoznam bude neúplný. Tieto výnimky môžete zachytiť tak, že najskôr vytvoríte zoznam adresárov a potom súbory.


Poznámky

Súbora súborov je užitočná, keď chcete pracovať so zbierkou súborov a/alebo priečinkov naraz.

Načítajú sa všetky zodpovedajúce súbory vrátane skrytých súborov. Naopak, funkcie operačného systému, ako napríklad príkaz DIR, v predvolenom nastavení vynechávajú skryté súbory. Aby ste sa vyhli spracovaniu skrytých, systémových a/alebo súborov iba na čítanie, použite v cykle niečo podobné:

Ak chcete počas rekurzívneho vyhľadávania načítať relatívne cesty súborov namiesto absolútnych, použite SetWorkingDir na zmenu na základný priečinok pred slučkou a potom cestu zo slučky vynechajte (napr. Slučka, *. *, 0, 1). To spôsobí, že A_LoopFileFullPath bude obsahovať cestu k súboru relatívne k základnému priečinku.

Súbora súborov sa môže narušiť, ak vytvára alebo premenuje súbory alebo priečinky v rámci svojej vlastnej pôsobnosti. Ak napríklad premenuje súbory pomocou programu FileMove alebo iným spôsobom, každý takýto súbor sa môže nájsť dvakrát: raz ako starý názov a znova ako nový názov. Ak to chcete obísť, premenujte súbory až po vytvorení ich zoznamu. Napríklad:

Súbory v systéme súborov NTFS sa pravdepodobne vždy načítajú v abecednom poradí. Súbory v iných súborových systémoch sa nevyberajú v konkrétnom poradí. Na zaistenie konkrétneho poradia použite príkaz Zoradiť, ako je uvedené v nižšie uvedenej časti Príklady.

Súbory a priečinky s úplným názvom cesty dlhším ako 259 znakov sa preskočia, ako keby neexistovali. Takéto súbory sú zriedkavé, pretože operačný systém ich vytváranie spravidla neumožňuje.

V časti Slučka nájdete informácie o blokoch, prerušeniach, pokračovaniach a premennej A_Index (ktorá existuje v každom type cyklu).


Pri spracovaní reťazcov cesty zadaných používateľom by ste mali spracovať aj výnimky pre nasledujúce podmienky:

Názov súboru má nesprávny tvar. Obsahuje napríklad neplatné znaky alebo iba prázdne miesta.

Názov súboru je dlhší než systémovo definovaná maximálna dĺžka.

Názov súboru obsahuje dvojbodku (:).

Ak aplikácia nemá dostatočné oprávnenia na čítanie zadaného súboru, metóda Exists vráti hodnotu false bez ohľadu na to, či cesta existuje, metóda nevyvolá výnimku.


1 odpoveď 1

Nie som si istý, či chcete mať tieto súbory a čo chcete získať, ale za predpokladu, že máte hlavný súbor book.tex v adresári „Bellankonda“ a súbory ako chap_page_015 sú iba kusy základného textu (žiadne plne kompilovateľné dokumenty LaTeX) a chcete získať jedinečný súbor PDF spájajúci všetky tieto časti, potom by súbor knihy mohol mať niečo ako toto:

Ak sú podsúbory niečo ako celé kapitoly, To musí začínať-končiť nové stránky, možno budete chcieť použiť include namiesto input. Pozrite si časť Kedy mám použiť input vs. include?

Ak sú doklady dieťaťa kompletné súbory LaTeX s preambulou (začínajúc documentclass a končiac end môžete použiť ten istý súbor vrátane zahrnutia do predzosilňovača samostatných balíkov alebo docmute alebo čiastkových súborov (v tomto prípade použite subfiles namiesto input). Dokumenty dieťaťa musia byť z rovnakej triedy, v opačnom prípade môžete vyskúšať kombinovanú triedu, ale zvyčajne to zvyčajne znamená požiadať o problémy. Ďalšou možnosťou v tomto prípade môže byť vytvorenie súborov PDF jednotlivých stránok a zlúčenie všetkých s balíkom pdfpages.

Pretože komentár Aku požaduje, aby slučka automaticky zapisovala vstupné príkazy, riešením by mohol byť príkaz foreach. Nasledujúci kód je jednoduchým príkladom, kde hlavný dokument obsahuje od page1.tex do page5.tex pomocou tohto príkazu:


Pozri si video: Ako zobraziť skryté súbory a priečinky v systéme Windows 10