25Aug
Als u een groot aantal mappen hebt ingesteld voor uw werk en ze tijdens de werkdag hetzelfde scriptbestand nodig hebben, wat is dan de gemakkelijkste manier om dat te bereiken dan heel veel kopiëren en plakken? De SuperUser Q & A post van vandaag heeft enkele nuttige antwoorden en advies voor een gefrustreerde lezer.
De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.
Screenshot met dank aan csaveanu( Flickr).
De vraag
SuperUser-lezer Elliot is op zoek naar de beste manier om hetzelfde bestand tegelijkertijd in meerdere mappen te laten lijken:
Ik heb 50+ mappen, die elk een grote hoeveelheid gegevens bevatten die moeten worden verwerkt. Allemaal worden ze verwerkt met dezelfde exacte code, gebruik makend van os.path.dirname( os.path.realpath( bestand)) om de map te krijgen waarin het python-script zich bevindt, dus er is geen handmatige bewerking nodig door de gebruiker, ze hoeven alleen maar te dubbelklikken.
Ik wil dat het script verschijnt alsof het zich in elke map bevindt terwijl het zich eigenlijk op slechts één plaats bevindt, zodat ik het een keer kan bewerken, en als het wordt uitgevoerd vanaf een van deze locaties, moet het mappad correct zijn. Het alternatief is het bewerken van de master en deze vervolgens één map per keer door alle 50+ mappen plakken telkens wanneer ik de code bijwerk, wat erg vervelend en foutgevoelig is. Onder Linux zou ik dit kunnen instellen met een symbolische link, maar ik kan er niet achter komen hoe ik dit met Windows kan doen.
Als alternatief zou een manier om het bestand in alle doelmappen tegelijk in plaats van één tegelijk te plakken, hetzelfde doel bereiken.
Is er een manier om dit te doen in plaats van het scriptbestand één map per keer te kopiëren en plakken?
Het antwoord
SuperUser-bijdrager gronostaj heeft het antwoord voor ons:
U hebt een -symbolische koppeling of een -harde koppeling nodig.
Symbolische koppelingen ( of Symlinks in het kort) lijken veel op snelkoppelingen: er is één feitelijk bestand en meerdere verwijzingen( Symlinks ) naar. Ze hebben zelfs dat kleine pijltje op de pictogrammen. In tegenstelling tot snelkoppelingen, kan Symlinks elke extensie hebben.
Hardlinks bindt een bestand op een harde schijf aan een locatie in de mappenboom. Elk bestand heeft ten minste één -harde koppeling , anders zou het niet in een map bestaan. Als een bestand meerdere -hardlinks heeft, kan het origineel niet van de andere worden onderscheiden en is het bestand fysiek op slechts één locatie aanwezig.
hebben allebei hun beperkingen:
- Sommige software speelt niet goed met Symlinks .
- Als het oorspronkelijke bestand wordt verwijderd, blijft al zijn Symlinks defect.
- U kunt -mappen met harde koppelingen niet gebruiken( maar u kunt een Directory Junction maken als een Symlink niet genoeg is).
- Cross-partition -hardlinks maken is onmogelijk.
Symlinks zijn meestal voldoende.
Een Symlink of een Harde Link maken:
1. Start een geprivilegieerde opdrachtregel: Druk op de Windows Key , typ cmd en druk dan op Ctrl + Shift + Enter .
2. Voer de opdracht mklink uit:
- mklink link_name link_target voor een bestand Symlink
- mklink / d link_name link_target voor een map Symlink
- mklink / h linknaam link_target voor een bestand Harde koppeling
- mklink / j linknaam link_target voor een Directory knooppunt
Heeft u iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk de volledige discussiethread hier.