Programiranje školjk je zabavno. Vendar je tako tudi Python. Ljudje z ozadjem C ali najpomembneje ljudje, ki uporabljajo Windows, se s tem ne strinjajo. Ljudje pogosto raje uporabljajo grafični vmesnik kot tisti v ukazni vrstici. Toda to je tako popolnoma narobe. Grafični uporabniški vmesnik je namenjen ljudem, ki mislijo, da programska oprema dela tisto, kar opisuje. Vendar to ni vedno tako. Še posebej v primeru oken za programiranje lupin, kjer so virusi in zlonamerne programske opreme ustvarile škodo, velikost Tornada. Tako se ljudje, ki uporabljajo vmesnik ukazne vrstice, običajno strinjajo, da je to, kar počnejo, pravilno, in jaz se strinjam z njimi, da imajo prav.

Velikokrat bi se navadno obtičali in cel računalnik visi zaradi preproste programske opreme, ki temelji na grafičnem vmesniku. Delo na vmesniku ukazne vrstice je pogosto bolj elegantno, hitro in najpomembneje je, da veste, kaj izvajate. A spet uporaba školjk in pisanje programov ni nekaj, kar bi raje počeli vsi.

Poleg tega bi bilo pisanje programov na jeziku C ali Java v bistvu veliko slabše kot uporaba programske opreme, ki temelji na uporabniškem vmesniku Graphic. Tu ne preklinjam C ali Java, samo da niso primerni za vsakodnevno uporabo. Tu se odlikujejo skriptni jeziki, kot so programiranje Shell in Python. Tako smo danes v vojni tukaj, kateri je bolj primeren za manjše in večje namene. Ali pa je to, da lahko dejansko združimo oba skupaj in naredimo nekaj novega in boljšega od obeh. Poglejmo globlje v oba in poglejmo, kam nas pelje.

Scenarij Bash Shell

Shell Scripting je res super. Tukaj lahko skoraj v večini opravite samo v eni vrstici kode. Recimo, vzemite to kodo: -

$ touch file.txt | echo -e 'hello \ n Nov \ n Svet \ n hello \ n Pozdravljen' >> file.txt | mačja datoteka.txt | vrsta | uniq | wc -l

Torej, kot vidite, se tukaj dogaja veliko zapisovanja lupin, ampak kaj se točno dogaja? Najprej '| 'je znana kot cev. Uporablja se za prenos izhoda ene datoteke v drugo. Sintaksa 'touch' se uporablja za ustvarjanje poljubne datoteke, sintaksa eho pa za tiskanje poljubnih stavkov. Dvojne desne stranske puščice '>>' se uporabljajo za vstavljanje izhoda v katero koli datoteko ali program. Sintaksa 'cat' se uporablja za branje vsebine datoteke. Razvrsti se uporablja za razvrščanje vsega po vrstnem redu, 'uniq' pa za odstranjevanje dvojnikov iz razvrščanja. 'Wc' se uporablja za štetje vrstic in -l je le zastava za njihovo tiskanje. Torej vsi ti uklenjeni ukazi naredijo naslednje.

  1. Najprej se ustvari datoteka z imensko datoteko s pripono txt, da se sporoči, da je besedilna datoteka.
  2. Drugič, echo -e se uporablja za tiskanje več besed znotraj datoteke file.txt, 'poševnica n' ali '\ n' pa se uporablja za vnos nove vrstice ali prehod v naslednjo vrstico.
  3. Po vnosu nizov v datoteko datoteko preberemo, razvrstimo po vrstnem redu in prenesemo v sintakso uniq, da odstranimo vse obstoječe podvojenike, kar je v našem primeru 'zdravo'.
  4. Na koncu natisnemo število vrstic s števcem 'wc-l' in ga natisnemo na končnem zaslonu.

Čeprav je zgoraj le ena vrstica kode, se lahko pri zagonu več pogojev zaplete. Skripta lupine so torej dobra, vendar jih ni mogoče ves čas uporabljati za nova opravila. Včasih želite, da so stvari enostavnejše, preproste kot uporabniški vmesnik Graphic. Skripti školjk so pravzaprav zelo dobri za izvajanje paketnih skriptov in izvajanje ponavljajočih se opravil, hkrati pa imajo tudi nekatere pomanjkljivosti: -

  1. Skripti školjk se navadno izredno zapletejo, ko postanejo obsežni.
  2. Skripte ponovne uporabe skoraj ni. Tu mislim, da je bash skripte izjemno težko vstaviti v C ali druge Java kode.
  3. Napredne funkcije, kot je razčlenitev HTML-ja, niso enostavno na voljo za bash.

Vendar pa je tu Python za reševanje in najustreznejša zamenjava za isto. Toda ali je scenarij Bash Shell popolnoma nadomestljiv? Oglejmo si.

Priporočeni tečaji

  • Spletno usposabljanje za spletno certificiranje v obsežnem J2EE
  • Strokovno usposabljanje R programiranja
  • Trening za spletno certificiranje v programiranju Go
  • Usposabljanje o programu Haskell

Scenarij Python Shell

Python je privzeto nameščen v skoraj vseh sistemih Linux in UNIX. Včasih ima distribucija lahko starejšo različico, vendar jo je mogoče posodobiti s preprostim ukazom. Programiranje Python Shell je veliko lažje razumeti in čistejše pisati celo za začetnike. Prav tako ima Python privzeto slog Read Eval Print Loop, ki pomaga pri preizkušanju novih kod v tolmaču. Toda samo uporaba pythona je lahko brez pomoči skripta bash shell nekoliko težka. Poleg tega smo v prejšnjem programu z eno vrstico uporabljali sintakso 'uniq' za odstranjevanje dvojnikov, vendar nam ni pokazalo, kaj so podvojeni. Torej, naj napišemo program python, da naredi isto: -

#! / usr / bin / env pythonimport sys # uvozi sistemske module za delo z imeniki filesif __name__ == "__main __": # Začenši s praznim slovarjem tukaj. Ki se imenuje kot vrstni red # Vsi ključi v tem slovarju so prikazani kot ime in podane vrednosti zanje # bodo tolikokrat, ko se bo pojavilo določeno ime.order = () # sys.stdin je predmet, ki se uporablja za datoteke. Vse tiste funkcije, ki se uporabljajo

# datotečni objekt se lahko uporablja tudi za sys.stdin.

za naročilo v sys.stdin.readlines ():

order = order.strip ()

če gre za naročila:

naročila (naročilo) + = 1

drugo:

naročila (naročilo) = 1

za naročilo, štejte v order.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (štetje, vrstni red))

Zdaj ta datoteka najprej prebere vhod iz predmeta sys.stdin. Ves izhod je zapisan predmetu sys.stdout. Po ustvarjanju tega skripta, ob predpostavki, da ste ga poimenovali kot order.py, lahko v terminalu preprosto izvedete naslednji skript lupine in našli boste skupno število vseh podvojenih nizov.

$ cat file.txt | python order.py

Podobno lahko to razvrstimo tudi s sintaksi sortiranja:

$ cat file.txt | python order.py | sorti -rn

Scenarij programiranja Python Shell vs Bash Shell

Zdaj smo videli, kako lahko kombiniramo skripte python in lupine, da ustvarimo verigo ukazov in jih skupaj izvedemo. Zdaj pa pojdimo še korak naprej in poglejmo, ali lahko Python popolnoma nadomesti Bash Shell.

Ko že govorimo o programiranju bash školjk, glede uspešnosti bash popolnoma premaga sranje iz pythona. Če pa ga primerjate s tipi podatkov in drugimi naprednimi stvarmi, bash nima veliko združljivosti. Čas zagona skripta bash lupine je 2, 8 milijon sekund, medtem ko je čas pythona 11, 1 mili sekunde. Če sem bolj iskren, je bash jezik splošnega pomena tako kot Python, vendar imata oba svoje prednosti in slabosti. Programiranje Bash lupine je privzeti terminal v večini distribucij Linuxa, zato bo vedno hitrejši glede zmogljivosti. Toda ali to pomeni, da lahko popolnoma nadomesti Python? Ne. Pri delu z velikimi programi se bo Bash še naprej zapletal, medtem ko Python ne. Kolikor vem, se lahko Python uporablja tudi kot predmet, usmerjen v objekt. Če ste šele začetnik, potem razlike med obema morda niti ne veste. Python je najelegantnejši scenaristični jezik, še bolj kot Ruby in Perl. Programiranje Bash lupine na drugi strani je pravzaprav zelo dobro pri prenosu izhodov enega ukaza v drugega.

Skript v školjkah je preprost in ni tako močan kot python. Ne ukvarja se z okviri in težko se loti spletnih programov, ki uporabljajo Shell Scripting. Resnična moč zapisovanja lupin je v urejevalniku ali prenosu besedila Stream, programi Awk in podobnih aplikacijah.

Ravnanje z datotekami in razvoj spletnih aplikacij

Bash Shell Scripting deluje brezhibno in hitro pri obravnavi datotek. Z obdelavo datotek mislim na kopiranje, kloniranje diskov, pisanje varnostnih kopij aplikacij za mreženje, ftp strežnike, shranjevanje vhodov datotek in dostop do njih pozneje ter prenos teh izhodov kasneje na nekaj drugega s pomočjo pipe. Python je na drugi strani bolj uporaben za obravnavo kosov podatkov, kot je branje podatkov iz datoteke in obdelava podatkov. Če sem bolj natančen, bash sploh ni programski jezik. Gre bolj za preprosto lupino, ki je bila usmerjena v obravnavo sistemskih datotek z ukazno vrstico, da bi bil postopek hitrejši in hitrejši.

Če torej pravilno poznate programiranje lupine bash, potem tudi veste, da so spremenljivke in področja uporabe bash izjemno omejeni. Python je na drugi strani bolj skriptni jezik lupine kot programski jezik. Če rečemo Bash kot programski jezik, je bolj podobno pripovedovanju Pythona objektno usmerjen programski jezik lupine. Lahko se s pythonom ukvarjamo na objektno orientiran način, vendar nikoli ne bo zgolj objektno orientiran, kot sta C ali Java. Podobno je Bash sicer scenaristični jezik; Bolj ga je uporabiti kot nekaj, kar je potrebno za hitro obdelavo datotek, kot pa za pisanje velikih programov v njih. Čeprav je Python skriptni jezik lupine, dejansko deluje znotraj svoje lupine. Na primer, če bi vse datoteke, ki so na namizju, prenesli v drug naključni imenik prek lupine Bash, bi šlo nekako takole:

$ cd Desktop $ mv * randomDirectory

Toda po drugi strani je narediti isto stvar v pythonu nekoliko bolj zapleteno. Gre nekako takole:

import os, glob za fname v glob.glob ('*'): os.rename (fname, 'randomdirectory')

Vendar pa je v najboljšem primeru mogoče narediti najbolj kompakten na ta način: -

import os, glob (os.rename (fname, 'randomdirectory') za fname v glob.glob ('*'))

Med učenjem katerega koli jezika vam bodo ljudje pogosto povedali, kako očistiti osnove in vse te stvari, vendar vam ne bodo povedali, kako se najprej lotiti sistema, ki je najpomembnejši. Poleg tega sta Python in Bash skriptni jezik Shell, kar pomeni, da sta oba razvita predvsem za obravnavo sistema in njegovih datotek.

Bash znotraj Pythona?

Ja, prav ste prebrali. Do zdaj smo prebrali o tem, kako lahko v Shell uvajamo skripte Python. Lahko pa v skripte pythona vnesemo tudi skripte Shell. Vzemimo za primer: - V lupino pythona vnesite 'apt-get update'? Očitno boste dobili neko napako, kot je neveljavna skladnja. Stvar je v tem, da če želite uporabiti bash kode, kot so 'ls, cd, mv' ali kaj drugega v pythonu, boste morali uvoziti OS modul. Zdaj pa naredite eno stvar, kopirajte to kodo in jo prilepite v Shell of python in preverite, kako deluje: -

$ python >>> iz sistema os import * >>> ('sudo apt-get update')

In zdaj deluje … ja. To je še en način, kako spraviti python in bash skripte skupaj. Poleg tega obstaja še en modul python, ki je posebej izdelan za delo z bashom. Ta modul je znan kot pexpect. Pexpect je modul python, ki se uporablja za drstenje otroških procesov, njihovo nadziranje in vračanje rezultatov v skladu s prošnjo otroškega procesa. Pexpect modul ima izredno enostaven vmesnik za uvoz potrebnih modulov in nadrejenih procesov znotraj njega in njihovo ustrezno izvajanje. Enostavno potrebujete, da se pip namesti v njihov sistem, da se namesti pexpect, modul pa lahko namestite na naslednji način: -

$ pip namestite pexpect

Različica Pexpect potrebuje različico pytona, ki je večja od 3, 3 ali natančneje 2, 7.

Za mešanje pythona in basha je veliko več in nič ne deluje bolje kot mešanica skripta Python in Bash. Ta mešanica naredi scenarij hiter zaradi Bash-a in vključujoč napredne funkcije zaradi Pythona. O pexpectu in njegovi dokumentaciji si lahko preberete na https://pexpect.readthedocs.org/online.

Priporočeni članki

Tukaj je nekaj člankov, ki vam bodo pomagali do podrobnosti o Bash Scripting in Python-u, zato pojdite po povezavi.

  1. Python vs JavaScript-dragocene razlike
  2. Top 25 neverjetnih vprašanj in odgovorov za Python Intervju
  3. Razlike med Python-om in JavaScript
  4. R Programiranje proti Pythonu
  5. PHP Rokovanje z datotekami