У ово Питхон водич да видимо скрипту која ће промените изглед .ткт у .сх у датотекама, а такође ће дати и дозволе за извршавање за корисника. За овај задатак ћемо користити модуле које већ имамо у Питхону, скрипта је важећа и за верзије 2.Кс и за 3.Кс, иако је излаз нешто другачији, понашање се неће променити, као што ћемо видети касније.
БелешкаСкрипта коју треба имплементирати је за употребу на УНИКС оперативним системима.
На пример, створио сам фасциклу са неколико датотека, неке имају .ткт екстензију, а друге немају, а постоји и датотека под називом тест1.ткт која има малу команду: лс -л. Он треба да провери да ли је заиста извршен, будући да су остали "лепљиви" јер не садрже податке. Садржај фасцикле можете видети на следећој слици:
Ако урадимо а лс -л видимо да ниједан нема дозволе за извршење:
Сада ћемо видети комплетан код и биће објашњено у наставку.
импорт ос, сис, стат из потпроцеса импорт Попен, ПИПЕ иф (лен (сис.аргв) <2): принт ("Потребан је пут за тражење") сис.екит (0) елиф (не ос.патх.екистс (сис.аргв [1])): принт ("Није пронађено:" + стр (сис.аргв [1])) сис.екит (0) процесс = Попен (["финд", сис.аргв [1]] , стдоут = ПИПЕ, стдерр = ПИПЕ) ако није процесс.стдерр.реад (): нум = 0 за линију у процесс.стдоут.реадлинес (): линеНев = лине.децоде ("УТФ-8"). стрип () иф (".ткт" у линеНев и ос.патх.исфиле (линеНев)): нев = линеНев.реплаце (". ткт", ". сх") ос.ренаме (линеНев, нев) ос.цхмод (нев, стат. С_ИКСУСР + стат.С_ИРУСР + стат.С_ИВУСР + стат.С_ИРГРП + стат.С_ИКСГРП) број + = 1 штампање ("Рад је завршен, промењен", број, "датотеке") елсе: принт ("Грешка")Почећемо са објашњењем кода корак по корак, прво што урадимо је увозимо модуле који ће нам бити потребни.
импорт ос, сис, стат из потпроцеса импорт Попен, ПИПЕЗатим ћемо проверити да ли нам је прослеђен аргумент и да ли је то пут, да видимо да ли настављамо са скриптом или не.
иф (лен (сис.аргв) <2): принт ("Потребан је пут за тражење") сис.екит (0) елиф (не ос.патх.екистс (сис.аргв [1])): принт ( "Није пронађено:"+ стр (сис.аргв [1])) сис.екит (0)За наставак користимо Попен модула потпроцес, снимамо стандардни излаз и излаз грешке, то радимо уз помоћ ЦЕВ, Цев. Сада можемо читати из цевовода као да је датотека.
процесс = Попен (["финд", сис.аргв [1]], стдоут = ПИПЕ, стдерр = ПИПЕ)Да бисмо знали да ли да наставимо, проверавамо да ли постоји грешка (сачувано у процес.стдерр) са следећим ако:
ако није процесс.стдерр.реад ():Ако дође до грешке, она ће се приказати на екрану Еррор (ово је за другу грану, која нема даље објашњење) и програм се завршава. Ако не, оно што ћемо урадити чита се са стандардне излазне цеви (стдоут). Радимо то линију по линију са фор, морамо декодирати излаз, у овом случају се одлучујем за УТФ-8, јер би са АСЦИИ то дало грешке са акцентима, на пример.
Ако наставимо да гледамо фор петљу, видимо да проверавамо да ли прочитани ред садржи .ткт, ако је тако, такође се проверава да ли је то датотека (не желимо да мењамо фасциклу која садржи .ткт). Ако је ово тачно, користимо функцију заменити Питхон -а за промену .ткт у .сх, а затим са цхмод функцијом модула дајемо вам дозволе, које ће бити извршавање, читање и писање за корисника, читање и извршавање за групу и ништа за друге. Као што видите, користимо стат модул.
Променљива број коју ћете видети у коду једноставно се користи за праћење броја датотека које мењамо и на крају за приказивање информација на екрану.
за линију у процесу.стдоут.реадлинес (): линеНев = лине.децоде ("УТФ-8"). стрип () иф (". ткт" у линеНев и ос.патх.исфиле (линеНев)): нев = линеНев. реплаце (". ткт", ". сх") ос.ренаме (линеНев, нев) ос.цхмод (нев, стат.С_ИКСУСР + стат.С_ИРУСР + стат.С_ИВУСР + стат.С_ИРГРП + стат.С_ИКСГРП) број + = 1На крају фор петље, оно што радимо је приказивање информација о којима говоримо, ту ћемо пронаћи разлику између верзија 2.к и 3.к, јер зарези пре и после нум у верзији 2 чине на листи, а на 3 приказује нормално (без листе).
принт ("Рад обављен, промењен", број, "датотеке")Ово се може променити да би се исто тумачило помоћу + и претварање променљиве нум у низ са функцијом стр, или кроз %, испод су 2 кода:
принт ("Рад је завршен, промењено" + стр (нум) + "филес") принт ("Рад је завршен, промењено% д датотека"% нум)На први начин је остављено да се покаже да између верзија Питхона постоје промене (оне могу бити мале као у овом случају, али нешто што ради у верзији 3 можда неће радити у верзији 2, и обрнуто).
Сада и скоро да завршимо водич, извршићемо код и видети како то функционише, испод остављам 2 слике извршења, користећи Питхон 3.к у првој, а у другој Питхон 2.к:
Овде ценимо мале разлике. Сада ћемо видети како изгледа фасцикла за тестирање коју смо видели раније:
Четири датотеке које су имале .ткт су промењене и сада имају .сх, чини се да је само датотека тест1.сх извршна, то је зато што остале не садрже податке. Извршићемо датотеку тест1.сх, која ће покренути само лс -л да смо рекли да садржи, па нам помаже да видимо дозволе.
Водич се овде завршава, у случају да вас занима, везу до још један водич о Питхону: претрага по називу датотеке.
Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен