Хелпикс

Главная

Контакты

Случайная статья





import os. import time. import os. import time



import os

 

import time

 

1. Ф а й л ы и к а т а л о г и, к о т о р ы е н е о б х о д и м о с к о п и р о в а т ь, с о б и р а ю т с я в с п и с о к.

 

source = ['" C: \\ My Documents" ', 'C: \\ Code']

 

З а м е т ь т е, ч т о д л я и м ё н, с о д е р ж а щ и х п р о б е л ы, н е о б х о д и м о и с п о л ь з о в а т ь

д в о й н ы е к а в ы ч к и в н у т р и с т р о к и.

2. Р е з е р в н ы е к о п и и д о л ж н ы х р а н и т ь с я в о с н о в н о м к а т а л о г е р е з е р в а.

 

target_dir = 'E: \\ Backup' # П о д с т а в ь т е т о т п у т ь, к о т о р ы й в ы б у д е т е и с п о л ь з о в а т ь.

 

3. Ф а й л ы п о м е щ а ю т с я в zip-а р х и в.

4. Т е к у щ а я д а т а с л у ж и т и м е н е м п о д к а т а л о г а в о с н о в н о м к а т а л о г е

 

today = target_dir + os. sep + time. strftime('%Y%m%d')

 

Т е к у щ е е в р е м я с л у ж и т и м е н е м zip-а р х и в а

 

now = time. strftime('%H%M%S')

 

З а п р а ш и в а е м к о м м е н т а р и й п о л ь з о в а т е л я д л я и м е н и ф а й л а

 

comment = input('В в е д и т е к о м м е н т а р и й --> ')

 

if len(comment)==0: #п р о в е р я е м, в в е д ё н л и к о м м е н т а р и й target = today + os. sep + now + '. zip'

else:

 

target = today + os. sep + now + '_' +

 

comment. replace(' ', '_') + '. zip'

 

С о з д а ё м к а т а л о г, е с л и е г о е щ ё н е т

 

if not os. path. exists(today):

 

os. mkdir(today) # с о з д а н и е к а т а л о г а

 

print ('К а т а л о г у с п е ш н о с о з д а н ', today)


 

 

96                                                                                                                               Г л а в а 13. Р е ш е н и е з а д а ч


A Byte of Python (Russian), В е р с и я 2. 01

 

5. И с п о л ь з у е м к о м а н д у " zip" д л я п о м е щ е н и я ф а й л о в в zip-а р х и в

 

zip_command = " zip -qr {0} {1}". format(target, ' '. join(source))

 

З а п у с к а е м с о з д а н и е р е з е р в н о й к о п и и

 

if os. system(zip_command)==0:

 

print ('Р е з е р в н а я к о п и я у с п е ш н о с о з д а н а в ', target)

 

else:

 

print ('С о з д а н и е р е з е р в н о й к о п и и Н Е У Д А Л О С Ь ')

 

В ы в о д:

 

$ python3 backup_ver3. py

 

File " backup_ver3. py", line 25

 

target = today + os. sep + now + '_' +

 

^

 

SyntaxError: invalid syntax

 

К а к э т о (н е ) р а б о т а е т:

 

Э т а п р о г р а м м а н е р а б о т а е т! Pythonс о о б щ а е т о б о б н а р у ж е н и и о ш и б к и с и н -т а к с и с а, ч т о о з н а ч а е т, ч т о с ц е н а р и й н е у д о в л е т в о р я е т с т р у к т у р е, к о т о р у ю о ж и -д а е т у в и д е т ь Python. К о г д а Python в ы д а ё т с о о б щ е н и е о б о ш и б к е, о н т а к ж е у к а -з ы в а е т н а м н а м е с т о о ш и б к и. Т а к ч т о м ы н а ч и н а е м о т л а д к у п р о г р а м м ы с э т о й с т р о к и.

 

П р и в н и м а т е л ь н о м р а с с м о т р е н и и, м ы в и д и м, ч т о о д н а л о г и ч е с к а я с т р о к а б ы -л а р а з б и т а н а д в е ф и з и ч е с к и е с т р о к и, н о м ы н е у к а з а л и, ч т о э т и д в е ф и з и -ч е с к и е с т р о к и я в л я ю т с я ч а с т ь ю о д н о й. Н а д е л е ж е Python п р о с т о о б н а р у ж и л о п е р а т о р с л о ж е н и я (+) б е з с о о т в е т с т в у ю щ е г о о п е р а н д а в т о й ж е л о г и ч е с к о й с т р о к е, а п о э т о м у н е з н а е т, к а к п р о д о л ж а т ь. П о м н и т е, ч т о м ы м о ж е м у к а з а т ь, ч т о л о г и ч е с к а я с т р о к а п р о д о л ж а е т с я н а с л е д у ю щ е й ф и з и ч е с к о й п р и п о м о щ и о б р а т н о й н а к л о н н о й ч е р т ы в к о н ц е ф и з и ч е с к о й с т р о к и. В н е с ё м э т о и с п р а в л е -н и е в н а ш у п р о г р а м м у. К о р р е к ц и я п р о г р а м м ы п р и о б н а р у ж е н и и о ш и б о к и н а з ы в а е т с я о т л а д к о й 7.

 

13. 5 Ч е т в ё р т а я в е р с и я

 

С о х р а н и т е к а к backup_ver4. py

 

import os

 

import time

 

1. Ф а й л ы и к а т а л о г и, к о т о р ы е н е о б х о д и м о с к о п и р о в а т ь, с о б и р а ю т с я в с п и с о к.

 

source = ['" C: \\ My Documents" ', 'C: \\ Code']

 

З а м е т ь т е, ч т о д л я и м ё н, с о д е р ж а щ и х п р о б е л ы, н е о б х о д и м о и с п о л ь з о в а т ь

7 bug fixing – у с т р а н е н и е «б а г о в », и с п р а в л е н и е о ш и б о к (п р и м. п е р е в )


 

13. 5. Ч е т в ё р т а я в е р с и я                                                                                                                                           97


A Byte of Python (Russian), В е р с и я 2. 01

 

д в о й н ы е к а в ы ч к и в н у т р и с т р о к и.

2. Р е з е р в н ы е к о п и и д о л ж н ы х р а н и т ь с я в о с н о в н о м к а т а л о г е р е з е р в а.

 

target_dir = 'E: \\ Backup' # П о д с т а в ь т е т о т п у т ь, к о т о р ы й в ы б у д е т е и с п о л ь з о в а т ь.

 

3. Ф а й л ы п о м е щ а ю т с я в zip-а р х и в.

4. Т е к у щ а я д а т а с л у ж и т и м е н е м п о д к а т а л о г а в о с н о в н о м к а т а л о г е

 

today = target_dir + os. sep + time. strftime('%Y%m%d')

 

Т е к у щ е е в р е м я с л у ж и т и м е н е м zip-а р х и в а

 

now = time. strftime('%H%M%S')

 

З а п р а ш и в а е м к о м м е н т а р и й п о л ь з о в а т е л я д л я и м е н и ф а й л а

 

comment = input('В в е д и т е к о м м е н т а р и й --> ')

 

if len(comment)==0: #п р о в е р я е м, в в е д ё н л и к о м м е н т а р и й target = today + os. sep + now + '. zip'

else:

 

target = today + os. sep + now + '_' + \

 

comment. replace(' ', '_') + '. zip'

 

С о з д а ё м к а т а л о г, е с л и е г о е щ ё н е т

 

if not os. path. exists(today):

 

os. mkdir(today) # с о з д а н и е к а т а л о г а

 

print ('К а т а л о г у с п е ш н о с о з д а н ', today)

 

5. И с п о л ь з у е м к о м а н д у " zip" д л я п о м е щ е н и я ф а й л о в в zip-а р х и в

 

zip_command = " zip -qr {0} {1}". format(target, ' '. join(source))

 

З а п у с к а е м с о з д а н и е р е з е р в н о й к о п и и

 

if os. system(zip_command)==0:

 

print ('Р е з е р в н а я к о п и я у с п е ш н о с о з д а н а в ', target)

 

else:

 

print ('С о з д а н и е р е з е р в н о й к о п и и Н Е У Д А Л О С Ь ')

 

В ы в о д:

 

$ python3 backup_ver4. py    

В в е д и т е к о м м е н т а р и й -->

added new examples
Р е з е р в н а я к о п и я у с п е ш н о с о з д а н а в E: \Backup\20080702\202836_added_new_examples. zip
$ python3 backup_ver4. py    

В в е д и т е к о м м е н т а р и й -->

   
Р е з е р в н а я к о п и я у с п е ш н о с о з д а н а в E: \Backup\20080702\202839. zip

 

К а к э т о р а б о т а е т:

 

Т е п е р ь э т а п р о г р а м м а р а б о т а е т! Д а в а й т е п р о с м о т р и м в с е у л у ч ш е н и я, с д е л а н -н ы е н а м и д л я в е р с и и 3. М ы з а п р а ш и в а е м п о л ь з о в а т е л ь с к и й к о м м е н т а р и й п р и п о м о щ и ф у н к ц и и input, а з а т е м п р о в е р я е м, в в ё л л и п о л ь з о в а т е л ь ч т о -

 

 

98                                                                                                                               Г л а в а 13. Р е ш е н и е з а д а ч


A Byte of Python (Russian), В е р с и я 2. 01

 

 

л и б о, о п р е д е л я я д л и н у в в е д ё н н о й с т р о к и ф у н к ц и е й len. Е с л и п о л ь з о в а т е л ь п р о с т о н а ж а л ENTER, н е в в о д я н и к а к о г о т е к с т а (м о ж е т б ы т ь, э т о б ы л о р е г у л я р -н о е с о з д а н и е р е з е р в н о й к о п и и, и л и н и к а к и х о с о б ы х и з м е н е н и й в н е с е н о н е б ы л о ), м ы п р о д о л ж а е м т а к ж е, к а к д е л а л и д о с и х п о р.

 

Е с л и ж е к о м м е н т а р и й б ы л в в е д ё н, о н д о б а в л я е т с я к и м е н и zip-а р х и в а п е р е д р а с ш и р е н и е м . zip. О б р а т и т е в н и м а н и е, ч т о м ы з а м е н я е м п р о б е л ы в к о м м е н -т а р и и п о д ч ё р к и в а н и я м и: у п р а в л я т ь ф а й л а м и б е з п р о б е л о в в и м е н а х н а м н о г о л е г ч е.

 

 

13. 6 Д о п о л н и т е л ь н ы е у с о в е р ш е н с т в о в а н и я

 

Ч е т в ё р т а я в е р с и я – в п о л н е у д о в л е т в о р и т е л ь н ы й р а б о ч и й с ц е н а р и й д л я б о л ь ш и н с т в а п о л ь з о в а т е л е й, о д н а к о н е т п р е д е л о в с о в е р ш е н с т в а. Н а п р и м е р, в п р о г р а м м у м о ж н о д о б а -в и т ь у р о в е н ь п о д р о б н о с т и 8 в ы в о д а, ч т о б ы п р и у к а з а н и и п а р а м е т р а “-v” о н а с т а н о в и л а с ь б о л е е «р а з г о в о р ч и в о й ».

 

Е щ ё о д н и м в о з м о ж н ы м у л у ч ш е н и е м б ы л а б ы в о з м о ж н о с т ь п е р е д а в а т ь с ц е н а р и ю д р у -г и е ф а й л ы и к а т а л о г и п р я м о в к о м а н д н о й с т р о к е. Э т и и м е н а м о ж н о п о л у ч а т ь и з с п и с к а sys. argv и д о б а в л я т ь к н а ш е м у с п и с к у source п р и п о м о щ и м е т о д а extend к л а с с а list.

 

Н а и б о л е е в а ж н ы м у с о в е р ш е н с т в о в а н и е м б ы л о б ы п р е к р а щ е н и е и с п о л ь з о в а н и я os. system д л я с о з д а н и я а р х и в о в, а п р и м е н е н и е в м е с т о н е г о в с т р о е н н ы х м о д у л е й zipfile и л и tarfile. О н и я в л я ю т с я ч а с т ь ю с т а н д а р т н о й б и б л и о т е к и, п о э т о м у в с е г д а д о -с т у п н ы д л я и с п о л ь з о в а н и я б е з з а в и с и м о с т и о т в н е ш н е й п р о г р а м м ы zip н а к о м п ь ю т е р е.

 

п р и в е д ё н н ы х п р и м е р а х м ы и с п о л ь з о в а л и с п о с о б с os. system д л я с о з д а н и я р е з е р в н ы х к о п и й и с к л ю ч и т е л ь н о в п е д а г о г и ч е с к и х ц е л я х, ч т о б ы п р и м е р б ы л д о с т а т о ч н о п р о с т д л я п о н и м а н и я л ю б ы м ч и т а т е л е м, н о д о с т а т о ч н о р е а л е н д л я т о г о, ч т о б ы д е л а т ь ч т о -т о п о л е з -н о е.

 

П о п р о б у й т е н а п и с а т ь п я т у ю в е р с и ю с и с п о л ь з о в а н и е м м о д у л я zipfile в м е с т о в ы з о в а os. system.

 

 

13. 7 П р о ц е с с р а з р а б о т к и п р о г р а м м н о г о о б е с п е ч е -н и я

 

п р о ц е с с е с о з д а н и я п р о г р а м м ы м ы п р о ш л и ч е р е з н е с к о л ь к о с т а д и й. Э т и с т а д и и м о ж н о с в е с т и п р и м е р н о в т а к о й с п и с о к:

 

Ч т о (А н а л и з )

 

К а к (П р о е к т и р о в а н и е )

 

verbosity – а н г л. «м н о г о с л о в н о с т ь ». П р и м е н и т е л ь н о к к о м п ь ю т е р н ы м п р о г р а м м а м о б о з н а ч а е т с т е п е н ь п о д р о б н о с т и в ы в о д и м ы х п р о г р а м м о й с о о б щ е н и й, т. е. с т е п е н ь «р а з г о в о р ч и в о с т и » п р о г р а м м ы. О т с ю д а и н а з в а н и е э т о г о п а р а м е т р а (п р и м. п е р е в )


 

 

13. 6. Д о п о л н и т е л ь н ы е у с о в е р ш е н с т в о в а н и я                                                                                      99


A Byte of Python (Russian), В е р с и я 2. 01

 

 

С о з д а н и е (Р е а л и з а ц и я )

 

Т е с т и р о в а н и е (Т е с т и р о в а н и е и О т л а д к а )

 

И с п о л ь з о в а н и е (Р а з в ё р т ы в а н и е и О п е р и р о в а н и е )

 

П о д д е р ж к а (У с о в е р ш е н с т в о в а н и е )

 

П р о ц е д у р а, к о т о р у ю м ы п р о ш л и п р и н а п и с а н и и с ц е н а р и я с о з д а н и я р е з е р в н ы х к о п и й р е к о м е н д у е т с я и д л я д р у г и х п р о г р а м м: П р о в е д и т е а н а л и з и п р о е к т и р о в а н и е. Н а ч н и т е р е а л и з а ц и ю с п р о с т е й ш е й в е р с и и. П р о т е с т и р у й т е и о т л а д ь т е е ё. П о п о л ь з у й т е с ь е ю, ч т о -б ы у б е д и т ь с я, ч т о о н а р а б о т а е т, к а к о ж и д а л о с ь. П о с л е э т о г о д о б а в л я й т е л ю б ы е н е о б х о -д и м ы е ф у н к ц и и, п о в т о р я я ц и к л «С о з д а н и е ! Т е с т и р о в а н и е ! И с п о л ь з о в а н и е » с т о л ь к о р а з, с к о л ь к о п о т р е б у е т с я. П о м н и т е, П р о г р а м м ы в ы р а щ и в а ю т с я, а н е с т р о я т с я.

 

13. 8 Р е з ю м е

 

М ы у в и д е л и, к а к с о з д а в а т ь с в о и с о б с т в е н н ы е п р о г р а м м ы /с ц е н а р и и н а Python, а т а к ж е р а з л и ч н ы е с т а д и и н а п и с а н и я п р о г р а м м. Н а д а н н о м э т а п е в а м б у д е т п о л е з н о с о з д а т ь с о б с т в е н н у ю п р о г р а м м у п о т а к о м у р е ц е п т у, к а к м ы э т о д е л а л и в н а с т о я щ е й г л а в е, ч т о б ы л у ч ш е п р и в ы к н у т ь к Python, р а в н о к а к и к р е ш е н и ю з а д а ч.

 

Д а л е е м ы о б с у д и м о б ъ е к т н о -о р и е н т и р о в а н н о е п р о г р а м м и р о в а н и е.


 

 

100                                                                                                                            Г л а в а 13. Р е ш е н и е з а д а ч


 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.