Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с путями Π² ΠŸΠΈΡ‚ΠΎΠ½ 3

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΠΎΠ»Π½Ρ‹ΠΉ курс ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Tkinter + ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’ Python Π΅ΡΡ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ GUI Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Β (graphical user interface), ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Tkinter встроСн Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ языка. Π£ Tkinter Π΅ΡΡ‚ΡŒ нСсколько прСимущСств. Он кроссплатформСнный, поэтому ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Windows, macOS ΠΈ Linux.

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· собствСнныС элСмСнты Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, поэтому прилоТСния, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tkinter, выглядят Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ‚ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Π₯отя Tkinter являСтся популярным GUI Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ Π½Π° Python, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свои нСдостатки. Один ΠΈΠ· Π½ΠΈΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ графичСскиС интСрфСйсы, созданныС с использованиСм Tkinter, выглядят ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ соврСмСнный, броский интСрфСйс, Ρ‚ΠΎ Tkinter ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ совсСм Ρ‚Π΅ΠΌ, для этого Π΅ΡΡ‚ΡŒ PyQt5 ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ развиваСтся сильнСС Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΏΠ»Π°Π½Π΅ использования, Tkinter являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΈΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для создания GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Python, особСнно Ссли соврСмСнный ΠΎΠ±Π»ΠΈΠΊ Π½Π΅ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ кроссплатформСнная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Tkinter Π½Π° сайтС

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Tkinter
  2. Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π² Tkinter β€” pack, grid ΠΈ place
  3. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Checkbutton, Label, Scale ΠΈ Listbox Π² Tkinter
  4. МСню, подмСню ΠΈ панСль инструмСнтов Π² Tkinter
  5. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° Π² Tkinter
  6. РисуСм Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, ΠΊΡ€ΡƒΠ³ ΠΈ тСкст Π² Tkinter
  7. ПишСм ΠΈΠ³Ρ€Ρƒ Π·ΠΌΠ΅ΠΉΠΊΠ° Π½Π° Tkinter

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ аспСкты руководства

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ созданиС простого прилоТСния Β«Hello, World!Β» Π² Tkinter;
  • Π Π°Π±ΠΎΡ‚Π° с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈΠ»ΠΈ тСкстовых боксов;
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· гСомСтричСскиС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹;
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ прилоТСния Ρ‡Π΅Ρ€Π΅Π· связываниС ΠΊΠ½ΠΎΠΏΠΎΠΊ с функциями Python.

ПослС освоСния основных Π½Π°Π²Ρ‹ΠΊΠΎΠ² Π² процСссС изучСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π΄Π°Π½Π½Ρ‹Ρ… Π² руководствС, Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… прилоТСния. Одно Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ΠΎΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ тСкста. Π§Ρ‚ΠΎ ΠΆ, приступим!

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ простого GUI прилоТСния Π½Π° Tkinter

Π“Π»Π°Π²Π½Ρ‹ΠΌ элСмСнтом GUI Tkinter являСтся ΠΎΠΊΠ½ΠΎ. Окнами Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находятся всС GUI элСмСнты. Π”Π°Π½Π½Ρ‹Π΅ GUI элСмСнты, ΠΊ числу ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… относятся тСкстовыС боксы, ярлыки ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ. Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΊΠΎΠ½.

Π‘ΠΏΠ΅Ρ€Π²Π° создадим ΠΎΠΊΠ½ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ. Запустим Π½ΠΎΠ²ΡƒΡŽ сСссию ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Python, слСдуя инструкции.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² руководствС, Π±Ρ‹Π»ΠΈ протСстированы Π½Π° Windows, macOS ΠΈ Ubuntu Linux 18.04 Ρ‡Π΅Ρ€Π΅Π· вСрсии Python 3.6, 3.7 ΠΈ 3.8.

Π’ случаС, Ссли Π²Ρ‹ установили Python Π½Π° Windows ΠΈΠ»ΠΈ macOS, скачав установщик c ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта python.org, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с запуском ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ самому руководству.

Π’ случаС, Ссли Π²Π²ΠΈΠ΄Ρƒ отсутствия ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… дистрибутивов Python для вашСй систСмы, Π²Ρ‹ установили Python ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹.

Установка Python Π½Π° macOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Homebrew

:

Дистрибутив Python для macOS, доступный Π½Π° Homebrew, поставляСтся Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tcl/Tk с Tkinter. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вСрсия систСмы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ВСрсия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Tkinter Π² Python. Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ установщик macOS.

Ubuntu Linux 16.04:

ПослСдняя вСрсия Python доступна Π½Π° Ubuntu Linux 16.04, это 3.5. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· deadsnakes PPA. Π”Π°Π»Π΅Π΅ Π΄Π°Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для установки PPA ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ послСднСй вСрсии Python с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсиСй Tcl/Tk:

$ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt-get update $ sudo apt-get install python3.8 python3-tk

$ sudo add-apt-repository ppa:deadsnakes/ppa

$ sudo apt-get update

$ sudo apt-get install python3.8 python3-tk

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ deadsnakes PPA Π² ваш систСмный список рСпозитория, Π° послСдняя ΠΊΠΎΠΌΠ°Π½Π΄Π° устанавливаСт Python 3.8 ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ GUI Tkinter.

Ubuntu Linux 18.04:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Python с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ вСрсиСй Tcl/Tk ΠΈΠ· ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория Ρ‡Π΅Ρ€Π΅Π· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ sudo apt-get install python3.8 python3-tk

$ sudo apt-get install python3.8 python3-tk

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ устанавливаСтся Python 3.8, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Tkinter.

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ вСрсии Linux:

Если Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ установщика Python для Linux дистрибутива, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Python вмСстС с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ вСрсиСй Tcl/Tk Ρ‡Π΅Ρ€Π΅Π· исходный ΠΊΠΎΠ΄. Π‘ пошаговой инструкциСй процСсса ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° страницС: Установка Python 3.8 ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π½Π° Linux

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ IDLE Python ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Tkinter:

Окно, ΠΈΠ»ΠΈ window являСтся экзСмпляром класса Tkinter. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, присвоив Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΠ½Π° window:

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° экранС появится Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π’ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, зависит ΠΎΡ‚ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы:

Π”Π°Π»Π΅Π΅ Π² руководствС Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Ubuntu ΠΈ Windows.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс tk.Label ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ тСкст Π½Π° ΠΎΠΊΠ½ΠΎ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ярлыка (label) с тСкстом "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!" ΠΈ присвоим Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ greeting:

>>> greeting = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!»)

>>> greeting = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!»)

Π‘ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΎΠΊΠ½ΠΎ Π½Π΅ мСняСтся. БоздаСтся Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ярлыка, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ добавляСтся Π½Π° ΠΎΠΊΠ½ΠΎ. Π•ΡΡ‚ΡŒ нСсколько способов добавлСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π½Π° ΠΎΠΊΠ½ΠΎ. БСйчас ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄

.pack() ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ярлыка:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΊΠ½ΠΎ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .pack() для размСщСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π² ΠΎΠΊΠ½Π΅, Tkinter устанавливаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ малСньким, насколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠΊΠ° Π² Π½Π΅Π³ΠΎ Π½Π΅ Π²Π»Π΅Π·Π°Π΅Ρ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Π±ΡƒΠ΄Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π½ΠΎ это Π½Π΅ совсСм Ρ‚Π°ΠΊ. window.mainloop() ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Python, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» событий Tkinter. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ трСбуСтся для событий Π²Ρ€ΠΎΠ΄Π΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ Π½Π° клавиши ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ запуск любого ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ слСдуСт послС, ΠΏΠΎΠΊΠ° ΠΎΠΊΠ½ΠΎ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ созданноС ΠΎΠΊΠ½ΠΎ, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΡƒΡŽΡΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ подсказку.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Tkinter ΠΈΠ· Python REPL ΠΎΠΊΠ½Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. Однако, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Tkinter выполняСтся ΠΈΠ· Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ происходит.

Если Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΒ window.mainloop() Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Python Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Tkinter Π½Π΅ запустится Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ.

Для создания ΠΎΠΊΠ½Π° Π² Tkinter, Π½ΡƒΠΆΠ½ΠΎ всСго нСсколько строк ΠΊΠΎΠ΄Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² пустоС ΠΎΠΊΠ½ΠΎ Π½Π°ΠΌ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚! Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, доступныС Π² Tkinter, Π° Ρ‚Π°ΠΊΠΆΠ΅ способы ΠΈΡ… настройки ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π—Π°Π΄Π°Π½ΠΈΠ΅ #1 Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Tkinter

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ нСбольшоС Π·Π°Π΄Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свои знания.

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ скрипт для создания ΠΎΠΊΠ½Π° Π² Tkinter с тСкстом Β«Python Ρ€ΡƒΠ»ΠΈΡ‚!Β». Окно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, прСдставлСнным Π½ΠΈΠΆΠ΅. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ программиста Π΅ΡΡ‚ΡŒ свой ΡΡ‚ΠΈΠ»ΡŒ, ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° вовсС Π½Π΅ обязана Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Код с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ


import tkinter as tk window = tk.Tk() label = tk.Label(text=»Python Ρ€ΡƒΠ»ΠΈΡ‚!») label.pack() window.mainloop()

import tkinter as tk

Β 

window = tk.Tk()

label = tk.Label(text=»Python Ρ€ΡƒΠ»ΠΈΡ‚!»)

label.pack()

Β 

window.mainloop()


Π Π°Π±ΠΎΡ‚Π° с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Π² Tkinter

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основой GUI Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Tkinter Π² Python. Π­Ρ‚ΠΎ элСмСнты, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’ Tkinter ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ классом. Π”Π°Π»Π΅Π΅ прСдставлСн список популярных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈΠ· Tkinter:

Класс Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
LabelΠ˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния тСкста ΠΈΠ»ΠΈ вставки изобраТСния Π½Π° ΠΎΠΊΠ½Π΅ прилоТСния.
ButtonКнопка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тСкст, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Π½Π΅Π΅.
EntryΠ’ΠΈΠ΄ΠΆΠ΅Ρ‚ для Π²Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΉ строчки тСкста. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ <input type="text"> Π² HTML.
TextΠ’ΠΈΠ΄ΠΆΠ΅Ρ‚ для Π²Π²ΠΎΠ΄Π° большого тСкста. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ <textarea> Π² HTML.
FrameΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ для добавлСния расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ.

Π’ дальнСйшСм, ΠΌΡ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ рассмотрим, ΠΊΠ°ΠΊ дСйствуСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· прСдставлСнных Π²Ρ‹ΡˆΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². Π‘ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ списками Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Tkinter ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° страницах Basic Widgets ΠΈ More Widgets. А ΠΏΠΎΠΊΠ° рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ярлыка Label.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ Label β€” ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Label ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния тСкста ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. ВСкст Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ Label, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Он Ρ‚ΠΎΠ»ΡŒΠΊΠΎ показываСтся. Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства, Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Label ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса Label ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ строки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ text:

label = tk.Label(text=»Hello, Tkinter»)

label = tk.Label(text=»Hello, Tkinter»)

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Label ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ тСкст с установлСнным ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ систСмным Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ Ρ„ΠΎΠ½ΠΎΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ΠΈ Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π² вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΈΠ½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ… Π²Ρ‹ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста ΠΈ Ρ„ΠΎΠ½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Label ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ foreground ΠΈ background:

label = tk.Label( text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», foreground=»white», # УстанавливаСт Π±Π΅Π»Ρ‹ΠΉ тСкст background=»black» # УстанавливаСт Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΠ½ )

label = tk.Label(

Β Β Β Β text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!»,

Β Β Β Β foreground=»white»,Β Β # УстанавливаСт Π±Π΅Π»Ρ‹ΠΉ тСкст

Β Β Β Β background=»black»Β Β # УстанавливаСт Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΠ½

)

НСкоторыС доступныС Ρ†Π²Π΅Ρ‚Π°:

  • red β€” красный;
  • orange β€” ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ;
  • yellow β€” ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ;
  • green β€” Π·Π΅Π»Π΅Π½Ρ‹ΠΉ;
  • blue β€” синий;
  • purple β€” сирСнСвый.

МногиС HTML-Ρ†Π²Π΅Ρ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π² Tkinter. Π‘ΠΎ списком доступных Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ здСсь.

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΠ΅, особСнно Π² систСмных Ρ†Π²Π΅Ρ‚Π°Ρ… macOS ΠΈ Windows, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠΎΠΉ ОБ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со страницСй Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ†Π²Π΅Ρ‚ΠΎΠ².

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ значСния RGB Ρ‚Π°ΠΊΠΎΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² CSS для стилизации сайтов:

label = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», background=»#34A2FE»)

label = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», background=»#34A2FE»)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΠΎΠ½ стал приятного Π³ΠΎΠ»ΡƒΠ±ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. ШСстнадцатСричныС значСния RGB, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ†Π²Π΅Ρ‚ΠΎΠ², Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ управляСмыми. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, доступны инструмСнты для простого ΠΈ быстрого получСния ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² Ρ†Π²Π΅Ρ‚ΠΎΠ².

Если Π²Π°ΠΌ Π½Π΅ хочСтся рСгулярно Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ foreground ΠΈ background, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сокращСнныС вСрсии ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” fg ΠΈ bg. Они Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° установку

Ρ†Π²Π΅Ρ‚Π° тСкста ΠΈ Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π°.

label = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», fg=»white», bg=»black»)

label = tk.Label(text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», fg=»white», bg=»black»)

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ высотой ярлыка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² width ΠΈ height:

import tkinter as tk window = tk.Tk() label = tk.Label( text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!», fg=»white», bg=»black», width=20, height=20 ) label.pack() window.mainloop()

import tkinter as tk

Β 

window = tk.Tk()

Β 

label = tk.Label(

Β Β Β Β text=»ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Tkinter!»,

Β Β Β Β fg=»white»,

Β Β Β Β bg=»black»,

Β Β Β Β width=20,

Β Β Β Β height=20

)

Β 

label.pack()

window.mainloop()

Π’ ΠΎΠΊΠ½Π΅, ярлык Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным, Ρ‡Ρ‚ΠΎ ярлык Π² ΠΎΠΊΠ½Π΅ Π½Π΅ являСтся ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌ, хотя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, Ρ‚Π°ΠΊ ΠΈ высоты Ρ€Π°Π²Π΅Π½

20. ВсС ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ Π² тСкстовых ΡŽΠ½ΠΈΡ‚Π°Ρ….

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкстовый ΡŽΠ½ΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ символа "0", ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ ноль, Π² ΡˆΡ€ΠΈΡ„Ρ‚Π΅ систСмы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ тСкстовый ΡŽΠ½ΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ высотой символа "0".

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Tkinter ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ тСкстовыС ΡŽΠ½ΠΈΡ‚Ρ‹ для измСрСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты вмСсто дюймов, сантимСтров ΠΈΠ»ΠΈ пиксСлСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ согласованноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ прилоТСния Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΡŽΠ½ΠΈΡ‚ΠΎΠ² ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ символа ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π° опрСдСляСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ обСспСчиваСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкста Π½Π° ярлыках ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π―Ρ€Π»Ρ‹ΠΊΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для отобраТСния тСкста, Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Button

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Button Π½ΡƒΠΆΠ½Ρ‹ для создания ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»Π°ΡΡŒ опрСдСлСнная функция. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΡƒΡ€ΠΎΠΊΠ°, Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. А ΠΏΠΎΠΊΠ° займСмся стилизациСй Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ сходств ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Button ΠΈ Label. По сути ΠΊΠ½ΠΎΠΏΠΊΠ° β€” это просто ярлык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ. Для создания стилСй Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ярлыка ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ создаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ с синим Ρ„ΠΎΠ½ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ тСкстом. Π’Π°ΠΊΠΆΠ΅ устанавливаСтся ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота с показатСлями Π² 25 ΠΈ 5 тСкстовых ΡŽΠ½ΠΈΡ‚:

import tkinter as tk window = tk.Tk() button = tk.Button( text=»ΠΠ°ΠΆΠΌΠΈ Π½Π° мСня!», width=25, height=5, bg=»blue», fg=»yellow», ) button.pack() window.mainloop()

import tkinter as tk

Β 

window = tk.Tk()

Β 

button = tk.Button(

Β Β Β Β text=»ΠΠ°ΠΆΠΌΠΈ Π½Π° мСня!»,

Β Β Β Β width=25,

Β Β Β Β height=5,

Β Β Β Β bg=»blue»,

Β Β Β Β fg=»yellow»,

)

Β 

button.pack()

window.mainloop()

Готовая ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

НСплохо! Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Entry ΠΈ Text ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для сбора Π²Π²ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ Entry β€” ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ тСкстовоС ΠΏΠΎΠ»Π΅

Π’ случаях, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Ρ€ΠΎΠ΄Π΅ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Entry. Он ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ нСбольшой тСкстовый бокс, ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти тСкст.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Entry практичСски Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ процСсса создания ярлыка ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ создаСт Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ с синим Ρ„ΠΎΠ½ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ тСкстом Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 50 тСкстовых ΡŽΠ½ΠΈΡ‚:

entry = tk.Entry(fg=»yellow», bg=»blue», width=50)

entry = tk.Entry(fg=»yellow», bg=»blue», width=50)

Π’ случаС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° однострочного тСкстового поля (Entry) интСрСсСн Π½Π΅ процСсс создания стиля, Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ провСсти с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ однострочного тСкстового поля (Entry):

  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ всСго тСкста Ρ‡Π΅Ρ€Π΅Π· .get()
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ тСкста Ρ‡Π΅Ρ€Π΅Π· .delete()
  • Вставка Π½ΠΎΠ²ΠΎΠ³ΠΎ тСкста Ρ‡Π΅Ρ€Π΅Π· .insert()

Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Entry создадим ΠΎΠ΄ΠΈΠ½ экзСмпляр элСмСнта ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ввСсти Π² Π½Π΅Π³ΠΎ тСкст. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Python ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ tkinter ΠΈ создаСм Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:

>>> import tkinter as tk >>> window = tk.Tk()

>>> import tkinter as tk

>>> window = tk.Tk()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создаСм Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Label ΠΈ Entry:

>>> label = tk.Label(text=»Π˜ΠΌΡ») >>> entry = tk.Entry()

>>> label = tk.Label(text=»Π˜ΠΌΡ»)

>>> entry = tk.Entry()

Π—Π΄Π΅ΡΡŒ ярлык ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ Entry. НСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ для Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, это просто подсказка, Ρ‡Ρ‚ΠΎ ввСсти Π½ΡƒΠΆΠ½ΠΎ «Имя». Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ станут Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π½Π° ΠΎΠΊΠ½Π΅ послС выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .pack() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…:

>>> label.pack() >>> entry.pack()

>>> label.pack()

>>> entry.pack()

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠΊΠ½Π΅, Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ярлыка автоматичСски Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π΄ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ тСкстового поля. Π­Ρ‚ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ pack, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ описано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

На созданном Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ тСкст «Иван Иванов»:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ тСкстового ΠΏΠΎΠ»ΡΒ Π΅ΡΡ‚ΡŒ тСкст, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Для получСния тСкста ΠΈ присваивания Π΅Π³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .get():

>>> name = entry.get() >>> name ‘Иван Иванов’

>>> name = entry.get()

>>> name

‘Иван Иванов’

ВСкст Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .delete(). Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом ΠΈ сообщаСт Python, ΠΊΠ°ΠΊΠΎΠΉ символ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ .delete(0) ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΈΠ· тСкстового поля:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ остался тСкст "Π²Π°Π½ Иванов":

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈ строки Π² Python, тСкст Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ однострочного тСкстового поля индСксируСтся,Β  ΠΈ начинаСтся индСксированиС с 0.

ΠŸΡ€ΠΈ нСобходимости ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСсколько символов ΠΈΠ· тСкстового поля Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ цСлочислСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² .delete(), ΡƒΠΊΠ°Π·Π°Π² индСкс символа, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ процСсс удалСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ удаляСт ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ· тСкстового поля:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ остался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст "Иванов":

ΠœΠ΅Ρ‚ΠΎΠ΄ .delete() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ строк slice() для удалСния части символов ΠΈΠ· строки. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ опрСдСляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ индСкс удалСния, послСдний индСкс ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ процСсс удалСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

Для удалСния всСго тСкста ΠΈΠ· тСкстового поля Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .delete() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ константа tk.END:

>>> entry.delete(0, tk.END)

>>> entry.delete(0, tk.END)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ остался пустой тСкстовый бокс:

Β 

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ тСкст Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ однострочного тСкстового поля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .insert():

>>> entry.insert(0, «Π˜Π²Π°Π½ΠΎΠ²»)

>>> entry.insert(0, «Π˜Π²Π°Π½ΠΎΠ²»)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΊΠ½ΠΎ стало Ρ‚Π°ΠΊΠΈΠΌ:

Β 

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ сообщаСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ .insert(), ΠΊΡƒΠ΄Π° Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ тСкст. Если Π² тСкстовом ΠΏΠΎΠ»Π΅ Π½Π΅Ρ‚ тСкста, Π½ΠΎΠ²Ρ‹ΠΉ тСкст Π±ΡƒΠ΄Π΅Ρ‚ всСгда Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°, ΠΈ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ .insert() с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ 100, Π° Π½Π΅ 0, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сдСлано Π²Ρ‹ΡˆΠ΅, Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅.

Π’ Ρ‚ΠΎΠΌ случаС, Ссли тСкстовоС ΠΏΠΎΠ»Π΅ ΡƒΠΆΠ΅ содСрТит ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст, Ρ‚ΠΎΠ³Π΄Π° .insert() Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ тСкст Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ сдвинСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ тСкст Π²ΠΏΡ€Π°Π²ΠΎ:

>>> entry.insert(0, «Π˜Π²Π°Π½ «)

>>> entry.insert(0, «Π˜Π²Π°Π½ «)

Π’ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ с тСкстом Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ значится "Иван Иванов":

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ однострочного тСкстового поля ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для получСния нСбольшого количСства тСкста ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку тСкста, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для большого количСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Text.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ Text β€” Π²Π²ΠΎΠ΄ большого тСкста Π² Tkinter

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Text ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Π²ΠΎΠ΄Π° тСкста, ΠΊΠ°ΠΊ ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Entry. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Text ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько строчСк тСкста. Π‘ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ Text ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Ρ‹ ΠΈΠ»ΠΈ страницы тСкста. Как ΠΈ Π² случаС с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Entry, Π½Π°Π΄ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Text ΠΌΠΎΠΆΠ½ΠΎ провСсти Ρ‚Ρ€ΠΈ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСкста Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ .get()
  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ тСкста Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ .delete()
  • Вставка тСкста Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ .insert()

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ названия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Ρ‚Π΅ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Entry, процСсс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Text ΠΈ посмотрим Π½Π° Π΄Π΅Π»Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Π£ вас всС Π΅Ρ‰Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ? Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎΠ³Π΄Π° Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, просто Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒΒ».

Π’ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Python Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ пустоС ΠΎΠΊΠ½ΠΎ, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .pack() Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ тСкстовой Π²ΠΈΠ΄ΠΆΠ΅Ρ‚:

>>> import tkinter as tk >>> window = tk.Tk() >>> text_box = tk.Text() >>> text_box.pack()

>>> import tkinter as tk

>>> window = tk.Tk()

>>> text_box = tk.Text()

>>> text_box.pack()

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ тСкстовыС боксы Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² однострочного Π²Π²ΠΎΠ΄Π° тСкста Entry. Π‘ΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅ ΠΎΠΊΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ тСкстового бокса Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Π»ΡŽΠ±ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΊΠ½Π°. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ слово "Hello". НаТмитС Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Enter, послС Ρ‡Π΅Π³ΠΎ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС слово "World". Окно Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Как ΠΈ Π² случаС с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Entry, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСкст ΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Text с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .get(). Однако, Π²Ρ‹Π·ΠΎΠ² .get() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вСсь тСкст ΠΊΠ°ΠΊ это происходит с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ однострочного Π²Π²ΠΎΠ΄Π° тСкста Entry. ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TypeError:

>>> text_box.get() Traceback (most recent call last): File «<pyshell#4>», line 1, in <module> text_box.get() TypeError: get() missing 1 required positional argument: ‘index1’

>>> text_box.get()

Traceback (most recent call last):

Β Β File «<pyshell#4>», line 1, in <module>

Β Β Β Β text_box.get()

TypeError: get() missing 1 required positional argument: ‘index1’

ΠœΠ΅Ρ‚ΠΎΠ΄ .get() для тСкстового Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΠ΄ΠΈ

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Python

Многим ΠΈΠ· нас Π·Π½Π°ΠΊΠΎΠΌΠ° ситуация, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ оказывался Π·Π°Π²Π°Π»Π΅Π½ Ρ‚ΠΎΠ½Π½Π°ΠΌΠΈ бСспорядочных Ρ„Π°ΠΉΠ»ΠΎΠ². Волько Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ большой zip-Π°Ρ€Ρ…ΠΈΠ², спустя ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ – Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π²ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΊΡƒ с Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. НавСрняка ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скучно ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту свалку Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΡ‹ сСйчас погрузимся Π² Β«ΡƒΠΌΠ½ΡƒΡŽΒ» Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Python.

Β«Π Π°Π±ΠΎΡ‚Π°ΠΉ ΡƒΠΌΠ½Π΅Π΅, Π° Π½Π΅ усСрднСС». ΠšΠ°Ρ€Π» Баркс

Π˜Ρ‚Π°ΠΊ, приступим, Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ Python вСрсии 3.4 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅. Π‘Π½Π°Ρ‡Π°Π»Π° пройдСмся ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ OS, Π° ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π° познакомимся Π΅Ρ‰Π΅ с нСсколькими. Всё, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, доступно Π² Python «с ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ потрСбуСтся.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ°ΠΏΠΊΡƒ ManageFiles, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ β€” RandomFiles. Π”Π΅Ρ€Π΅Π²ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ManageFiles/
 |
 |_RandomFiles/

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΌΡ‹ сгСнСрируСм ΠΈΡ… случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ RandomFiles. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» create_random_files.py Π² ΠΏΠ°ΠΏΠΊΠ΅ ManageFiles. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ:

ManageFiles/
 |
 |_ create_random_files.py
 |_RandomFiles/

Π“ΠΎΡ‚ΠΎΠ²ΠΎ? Π’Π΅ΠΏΠ΅Ρ€ΡŒ помСститС Π² Ρ„Π°ΠΉΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΅Π³ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ:

import os
from pathlib import Path
import random

list_of_extensions = ['.rst', '.txt', '.md', '.docx', '.odt', '.html', '.ppt', '.doc']

# ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ RandomFiles
os.chdir('./RandomFiles')

for item in list_of_extensions:
    # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 20 случайных Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ
    for num in range(20):
        # ΠΏΡƒΡΡ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° начинаСтся со случайного числа ΠΎΡ‚ 1 Π΄ΠΎ 50
        file_name = random.randint(1, 50)
        file_to_create = str(file_name) + item
        Path(file_to_create).touch()

Начиная с Python 3.4 ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ pathlib, Π½Π°ΡˆΡƒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Π²ΠΎΠ»ΡˆΠ΅Π±Π½ΡƒΡŽ ΠΏΠ°Π»ΠΎΡ‡ΠΊΡƒ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ random для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных чисСл, Π½ΠΎ Π΅Π΅ ΠΌΡ‹ посмотрим Π² дСйствии Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅.

Π‘ΠΏΠ΅Ρ€Π²Π° создадим список Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для формирования Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ². НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° свои Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ RandomFiles ΠΈ запускаСм Ρ†ΠΈΠΊΠ». Π’ Π½Π΅ΠΌ ΠΌΡ‹ просто Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: возьми ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт list_of_extensions ΠΈ сдСлай с Π½ΠΈΠΌ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ 20 Ρ€Π°Π·.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ random. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π΅ для производства случайных чисСл ΠΎΡ‚ 1 Π΄ΠΎ 50. Π­Ρ‚ΠΎ просто Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ творчСский способ побыстрСС Π΄Π°Ρ‚ΡŒ названия нашим тСстовым Ρ„Π°ΠΉΠ»Π°ΠΌ: ΠΊ сгСнСрированному числу Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ 23.txt ΠΈΠ»ΠΈ 14.txt. И Ρ‚Π°ΠΊ 20 Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ образуСтся бСспорядок, достаточный для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ лСнь ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π˜Ρ‚Π°ΠΊ, запустим наш Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ хаоса Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

python create_random_files.py

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас полная ΠΏΠ°ΠΏΠΊΠ° Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…ΠΈ. Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Π’ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ create_random_files.py, создадим Ρ„Π°ΠΉΠ» clean_up.py ΠΈ помСстим Ρ‚ΡƒΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.

Бпособ 1

import os
import shutil
import glob

# ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ RandomFiles
os.chdir('./RandomFiles')

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ RandomFiles
files_to_group = []
for random_file in os.listdir('.'):
    files_to_group.append(random_file)

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ всСх Ρ„Π°ΠΉΠ»ΠΎΠ²
file_extensions = []
for our_file in files_to_group:
    file_extensions.append(os.path.splitext(our_file)[1])

print(set(file_extensions))

file_types = set(file_extensions)

for type in file_types:
    new_directory = type.replace(".", " ")
    os.mkdir(new_directory)  # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

    for fname in glob.glob(f'*.{type[1:]}'):
        shutil.move(fname, new_directory)

Для этого ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: shutil ΠΈ glob. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π° вторая – Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Но ΠΎΠ±ΠΎ всСм ΠΏΠΎ порядку.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π΅Ρ‚ Π½ΠΈ малСйшСго понятия ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ Π² этой ΠΏΠ°ΠΏΠΊΠ΅. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лСстницу инструкций if ΠΈΠ»ΠΈ switch, ΠΌΡ‹ ΠΆΠ΅Π»Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сама просмотрСла ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π°, Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ содСрТаниС. Π§Ρ‚ΠΎ, Ссли Π±Ρ‹ Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ с дСсятками Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈ? Π’Ρ‹ Π±Ρ‹ стали ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ?

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² список всСх Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΌΡ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки:

os.path.splitext(our_file)[1]

БСйчас наша пСрСмСнная our_file выглядит ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Π°ΠΊ: 5.docx. Когда Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π΅Π΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

`('5', '.docx')`

ΠœΡ‹ возьмСм ΠΎΡ‚ΡΡŽΠ΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΏΠΎ индСксу [1], Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ .docx. Π’Π΅Π΄ΡŒ ΠΏΠΎ индСксу [0] Ρƒ нас располагаСтся 5.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ нас имССтся список всСх Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π² ΠΏΠ°ΠΏΠΊΠ΅, Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π²ΠΎ мноТСство. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π±Ρ‹ этот список состоял ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· .docx, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π³ΠΎΡΡ снова ΠΈ снова, Ρ‚ΠΎ Π² set остался Π±Ρ‹ всСго ΠΎΠ΄ΠΈΠ½ элСмСнт.

# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
file_types = set(file_extensions)

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² спискС Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ содСрТит . Π² Π½Π°Ρ‡Π°Π»Π΅. Если ΠΌΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Ρ‚Π°ΠΊ ΠΏΠ°ΠΏΠΊΠΈ Π½Π° UNIX-систСмС, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ скрытыми, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² наши намСрСния.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, итСрируя ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ мноТСству, ΠΌΡ‹ замСняСм Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° ΠΏΡƒΡΡ‚ΡƒΡŽ строку. И создаСм ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

new_directory = type.replace(".", " ")
# наша дирСктория Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ "docx"

Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°ΠΌ всС Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .docx.

for fname in glob.glob(f'*.{type[1:]}')

Π­Ρ‚ΠΈΠΌ попросту ΠΎΡ‚Π±ΠΈΡ€Π°Π΅ΠΌ всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .docx. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² f'*.{type[1:]}') Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

Π‘ΠΈΠΌΠ²ΠΎΠ» подстановки * ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ любоС имя, Ссли ΠΎΠ½ΠΎ заканчиваСтся Π½Π° .docx. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² поиск, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ [1:], Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ «всС послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа». Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это docx.

Π§Ρ‚ΠΎ дальшС? ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

shutil.move(fname, new_directory)

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ создана ΠΏΠ°ΠΏΠΊΠ° для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ попавшСгося Ρ„Π°ΠΉΠ»Π° с Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ, всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² Π½Π΅Π΅ ΠΆΠ΅. ВсС Π±ΡƒΠ΄Π΅Ρ‚ сгруппировано Π±Π΅Π· повторСния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Бпособ 2

Π’ качСствС Ρ…ΠΈΡ‚Ρ€ΠΎΠ³ΠΎ способа ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список Π² ΠΎΠ΄Π½Ρƒ строку ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

import os
import shutil
import glob

# ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠ°ΠΊΡƒ RandomFiles
os.chdir('./RandomFiles')
# Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π² список
all_files = [x for x in os.listdir('.')]

# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² этой ΠΏΠ°ΠΏΠΊΠ΅
file_types = set((os.path.splitext(f)[1] for f in all_files))

for ftype in file_types:
    new_directory = ftype.replace(".", '')
    os.mkdir(new_directory)

    for fname in glob.glob(f'*.{ftype[1:]}'):
        shutil.move(fname, new_directory)

Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΈ всС ваши Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ отсортированы ΠΏΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ.

ManageFiles/
 |
 |_create_random_files.py
 |_RandomFiles/
    |_doc
    |_docx
    |_html
    |_md
    |_odt
    |_ppt

Π’ΠΎΡ‚ ΠΈ всС. Если Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ понадобится ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ сэкономитС Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ 😊. Код упраТнСния доступСн здСсь.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ OS ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой

ΠœΠΎΠ΄ΡƒΠ»ΡŒ OS ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой

ПослСднСС обновлСниС: 02.05.2017

Ряд возмоТностСй ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ прСдоставляСт встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ os. Π₯отя ΠΎΠ½ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основныС ΠΈΠ· Π½ΠΈΡ…:

  • mkdir(): создаСт Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ

  • rmdir(): удаляСт ΠΏΠ°ΠΏΠΊΡƒ

  • rename(): ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»

  • remove(): удаляСт Ρ„Π°ΠΉΠ»

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ

Для создания ΠΏΠ°ΠΏΠΊΠΈ примСняСтся функция mkdir(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаСтся ΠΏΡƒΡ‚ΡŒ ΠΊ создаваСмой ΠΏΠ°ΠΏΠΊΠ΅:


import os

# ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ скрипта
os.mkdir("hello")
# Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ
os.mkdir("c://somedir")
os.mkdir("c://somedir/hello")

Для удалСния ΠΏΠ°ΠΏΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция rmdir(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаСтся ΠΏΡƒΡ‚ΡŒ ΠΊ удаляСмой ΠΏΠ°ΠΏΠΊΠ΅:


import os

# ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ скрипта
os.rmdir("hello")
# Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ
os.rmdir("c://somedir/hello")

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°

Для пСрСимСнования вызываСтся функция rename(source, target), ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ — ΠΏΡƒΡ‚ΡŒ ΠΊ исходному Ρ„Π°ΠΉΠ»Ρƒ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ — Π½ΠΎΠ²ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π°. Π’ качСствС ΠΏΡƒΡ‚Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅. НапримСр, ΠΏΡƒΡΡ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ C://SomeDir/ располагаСтся Ρ„Π°ΠΉΠ» somefile.txt. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ» «hello.txt»:


import os

os.rename("C://SomeDir/somefile.txt", "C://SomeDir/hello.txt")

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°

Для удалСния вызываСтся функция remove(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаСтся ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ:


import os

os.remove("C://SomeDir/hello.txt")

БущСствованиС Ρ„Π°ΠΉΠ»Π°

Если ΠΌΡ‹ попытаСмся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сущСствуСт, Ρ‚ΠΎ Python выбросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ FileNotFoundError. Для ΠΎΡ‚Π»ΠΎΠ²Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ try…except. Однако ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΆΠ΅ Π΄ΠΎ открытия Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ ΠΎΠ½ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° os.path.exists(path). Π’ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ пСрСдаСтся ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:


filename = input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ: ")
if os.path.exists(filename):
    print("Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сущСствуСт") 
else:
    print("Π€Π°ΠΉΠ» Π½Π΅ сущСствуСт") 

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python

Π€Π°ΠΉΠ»Ρ‹ Π²Β Python

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с файлом, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Для этого Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π° встроСнная функция

open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈΒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π Π΅ΠΆΠΈΠΌΡ‹ открытия Ρ„Π°ΠΉΠ»Π°
rΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π°Β Ρ‡Ρ‚Π΅Π½ΠΈΠ΅
wΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° на запись, содСрТимоС Ρ„Π°ΠΉΠ»Π° удаляСтся, Ссли Ρ„Π°ΠΉΠ»Π° нС сущСствуСт, создаСтся Π½ΠΎΠ²Ρ‹ΠΉ
xΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° на запись, Ссли Ρ„Π°ΠΉΠ»Π° нС сущСствуСт. Если Ρ„Π°ΠΉΠ» сущСствуСт, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
aΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° на запись, информация добавляСтся Π²Β ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°
bΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π²Β Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅
tΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° в тСкстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅
+ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π°Β Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ и запись
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„Π°ΠΉΠ»Π°

file.read([size])

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ·Β Ρ„Π°ΠΉΠ»Π°. Если Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ size ΡƒΠΊΠ°Π·Π°Π½, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎΠ΅ количСство символов/Π±Π°ΠΉΡ‚.

file.write(content)

ЗаписываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Β Ρ„Π°ΠΉΠ»

file.tell()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°

file.seek(position, [from_what=0])

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Β Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Β β€” это количСство ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, Π½Π°Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Если этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ Π²ΠΏΡ€Π°Π²ΠΎ, Ссли ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΒ β€” Π²Π»Π΅Π²ΠΎ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Β β€” это from_what. Π‘Β ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° слСдуСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ: 0Β β€” ΠΎΡ‚Β Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»Π°, 1Β β€” ΠΎΡ‚Β Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΒ 2Β β€” ΠΎΡ‚Β ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°. ΠŸΠΎβ€‘ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0

file.close()

Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ». ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ послС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с файлом.

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python

python-scripts.com

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python

Π°Π²Ρ‚ΠΎΡ€

9-12 ΠΌΠΈΠ½ΡƒΡ‚


Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π²ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° вашСм ТСстком дискС. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго обучСния, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Python – это ΠΎΡ‡Π΅Π½ΡŒ просто. НачнСм ΠΆΠ΅.

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹

Python содСрТит Π² сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«openΒ», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для открытия Ρ„Π°ΠΉΠ»ΠΎΠ² для чтСния. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ тСкстовый Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ test.txt ΠΈ Π²ΠΏΠΈΡˆΠΈΡ‚Π΅:

This is test file

line 2

line 3

this line intentionally left lank

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΒ» для чтСния:

handle = open(«test.txt»)

handle = open(r»C:\Users\mike\py101book\data\test.txt», «r»)

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ test.txt Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β». Π­Ρ‚ΠΎ стандартный Ρ€Π΅ΠΆΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ открытия Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ пропускаСм вСсь ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ собираСмся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Python автоматичСски просмотрит ΠΏΠ°ΠΏΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ скрипт для text.txt. Если Π΅Π³ΠΎ Π½Π΅ удаСтся Π½Π°ΠΉΡ‚ΠΈ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС IOError. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ начинаСтся с Β«rΒ». Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строка ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ исходная. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ исходной строкой ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ:

>>> print(«C:\Users\mike\py101book\data\test.txt»)

C:\Users\mike\py101book\dataΒ Β Β Β est.txt

>>> print(r»C:\Users\mike\py101book\data\test.txt»)

C:\Users\mike\py101book\data\test.txt

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ опрСдСляСм строку ΠΊΠ°ΠΊ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это происходит? Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ β€œn” ΠΈΠ»ΠΈ β€œt”. Π’ нашСм случаС присутствуСт β€œt” (ΠΈΠ½Ρ‹ΠΌΠΈ словами, Π²ΠΊΠ»Π°Π΄ΠΊΠ°), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ строка ΠΏΠΎΡΠ»ΡƒΡˆΠ½ΠΎ добавляСт Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π² наш ΠΏΡƒΡ‚ΡŒ ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ‚ Π΅Ρ‘ для нас. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠΊΠ²Π° β€œr”. Π”Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β». Π˜Π½Ρ‹ΠΌΠΈ словами, происходит Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ явно. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΎΡ‡Ρ‚Π΅ΠΌ Ρ„Π°ΠΉΠ»!

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΈΠΆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ строки Π² скрипт, ΠΈ сохранитС Π΅Π³ΠΎ Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ Ρ„Π°ΠΉΠ» test.txt.

handle = open(«test.txt», «r»)

data = handle.read()

print(data)

handle.close()

ПослС запуска, Ρ„Π°ΠΉΠ» откроСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΊΠ°ΠΊ строка Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ data. ПослС этого ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ дСскриптор Ρ„Π°ΠΉΠ»Π°. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ всСгда Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ дСскриптор Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нСизвСстно ΠΊΠΎΠ³Π΄Π° ΠΈ какая ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ появлСния странных Π±Π°Π³ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Python Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ строку Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС строки Π² спискС Python, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ частям. ПослСдняя опция ΠΎΡ‡Π΅Π½ΡŒ полСзная, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большими Ρ„Π°Π»Π°ΠΌΠΈ ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС Π΅Π³ΠΎ содСрТимоС, Π½Π° Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ вся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы чтСния Ρ„Π°ΠΉΠ»ΠΎΠ².

handle = open(«test.txt», «r»)

data = handle.readline() # read just one line

print(data)

handle.close()

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½Π° ΠΈ распСчатана Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая строка тСкстового Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ readlines() Π² дСскрипторС:

handle = open(«test.txt», «r»)

data = handle.readlines() # read ALL the lines!

print(data)

handle.close()

ПослС запуска Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ Π½Π° экранС список, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ readlines() ΠΈ выполняСт. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ научимся Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΌΠ΅Π»ΠΊΠΈΠΌ частям.

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ частям

Π‘Π°ΠΌΡ‹ΠΉ простой способ для выполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ». Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ научимся Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» строку Π·Π° строкой, послС этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρƒ Π·Π° Ρ€Π°Π·. Π’ нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»:

handle = open(«test.txt», «r»)

for line in handle:

Β Β Β Β print(line)

handle.close()

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» Π² дСскрипторС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β», послС Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» для Π΅Π³ΠΎ повторСния. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Python (строки, списки, запятыС, ΠΊΠ»ΡŽΡ‡ΠΈ Π² словарС, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅). Π’Π΅ΡΡŒΠΌΠ° просто, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ частям:

handle = open(«test.txt», «r»)

while True:

Β Β Β Β data = handle.read(1024)

Β Β Β Β print(data)

Β Β Β Β if not data:

Β Β Β Β Β Β Β Β break

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Python Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΏΠΎΠΊΠ° Ρ‡ΠΈΡ‚Π°Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρƒ Π·Π° Ρ€Π°Π·. Как извСстно, ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ содСрТит Π² сСбС 1024 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ символов. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ PDF.

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅) Ρ„Π°ΠΉΠ»Ρ‹

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто. ВсС Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ:

handle = open(«test.pdf», «rb»)

ΠœΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ способ доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π½Π° rb, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ read-binaryy. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΊΠ°Ρ‡Π°Π΅Ρ‚Π΅ PDF Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ.

ПишСм Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π² Python

Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, слСдуя Π»ΠΎΠ³ΠΈΠΊΠ΅ написанного Π²Ρ‹ΡˆΠ΅, Ρ€Π΅ΠΆΠΈΠΌΡ‹ написания Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Python это β€œw” ΠΈ β€œwb” для write-mode ΠΈ write-binary-mode соотвСтствСнно. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.
Π’ΠΠ˜ΠœΠΠΠ˜Π•: использованиС Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² β€œw” ΠΈΠ»ΠΈ β€œwb” Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΅Π³ΠΎ Π±Π΅Π· прСдупрСТдСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΎΡ‚ΠΊΡ€Ρ‹Π² Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ модуля ОБ Python.

handle = open(«output.txt», «w»)

handle.write(«This is a test!»)

handle.close()

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Π²ΠΎΡ‚ просто. ВсС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ здСсь сдСлали – это ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π° β€œw” ΠΈ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ написания Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ дСскрипторС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ тСкст Π² Ρ‚Π΅Π»Π΅ Ρ„Π°ΠΉΠ»Π°. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ writelines (написаниС строк), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ список строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСскриптор, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ порядку Π½Π° диск.

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«withΒ»

Π’ Python имССтся Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ встроСнный инструмСнт, примСняя ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ with создаСт диспСтчСр контСкста Π² ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» для вас, ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π½Π΅ΠΌ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

with open(«test.txt») as file_handler:

Β Β Β Β for line in file_handler:

Β Β Β Β Β Β Β Β print(line)

Бинтаксис для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° with, Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, каТСтся слСгка Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ это вопрос Π½Π΅Π΄ΠΎΠ»Π³ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. ЀактичСски, всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, это:

handle = open(«test.txt»)

МСняСм Π½Π° это:

with open(«test.txt») as file_handler:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС стандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°\Π²Ρ‹Π²ΠΎΠ΄Π°, Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ порядкС, ΠΏΠΎΠΊΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚Π΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ Π΅Π³ΠΎ, ΠΈ Π΅Π³ΠΎ ΡƒΠΆΠ΅ нСльзя Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. И Π΄Π°, Π²Ρ‹ всС ΠΏΡ€ΠΎΡ‡Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΡ‡Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ дСскриптор Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚ это автоматичСски. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ внСсти измСнСния Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ with.

ВыявлСниС ошибок

Иногда, Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ошибки ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ. Π€Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠΈΠ·-Π·Π° наличия Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ошибки Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Когда это происходит, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ IOError. Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ эти ошибки ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом, ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° with. Подсказка: данная идСя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ ΠΎΠ±ΠΎΠΈΠΌ способам.

try:

Β Β Β Β file_handler = open(«test.txt»)

Β Β Β Β for line in file_handler:

Β Β Β Β Β Β Β Β print(line)

except IOError:

Β Β Β Β print(«An IOError has occurred!»)

finally:

Β Β Β Β file_handler.close()

Π’ описанном Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² конструкции try/except. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚, слСдуСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ сообщСниС Π½Π° экранС. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слСдуСт ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° finally. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ:

try:

Β Β Β Β with open(«test.txt») as file_handler:

Β Β Β Β for line in file_handler:

Β Β Β Β Β Β Β Β print(line)

except IOError:

Β Β Β Β print(«An IOError has occurred!»)

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ пСрСмСстили Π±Π»ΠΎΠΊ with Ρ‚ΡƒΠ΄Π° ΠΆΠ΅, Π³Π΄Π΅ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally Π½Π΅ трСбуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ контСкстный диспСтчСр выполняСт Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для нас.

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

Π‘ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ записи Π² Ρ„Π°ΠΉΠ»Ρ‹ двумя способами. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ смоТСтС с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ вопросС.

функция open, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² Python

Π€Π°ΠΉΠ»Ρ‹ относятся ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… языка Python. Π­Ρ‚ΠΎ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ областями памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π€Π°ΠΉΠ»Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ «консСрвирования» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ. ΠœΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ запись Π² Ρ„Π°ΠΉΠ» Π² Python ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»?

Π Π°Π±ΠΎΡ‚Π° с этим Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… стартуСт со встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open. Она создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт связь с внСшним Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈΠ»ΠΈ записи Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² Python.

Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ покаТСтся слоТной. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… строк, чисСл, словарСй. Для взаимодСйствия с Π½ΠΈΠΌΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ спСцифичСскиС. НапримСр, инструкция output.flush(), которая Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ Π½Π° диск Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹. Но ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ с Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ».

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ open(), Π² скобках ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, имя внСшнСго Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ:

  • r – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ откроСтся Ρ€Π΅ΠΆΠΈΠΌ чтСния;
  • w – Ρ€Π΅ΠΆΠΈΠΌ записи Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² Python;
  • a – для записи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² самый ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°;
  • b – ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²;
  • Π·Π½Π°ΠΊ Β«+Β» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ – всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ строк, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:

  • >>>This_file = open(Β«C:\oddΒ», Β«wΒ») #ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹?

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ для чтСния Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно Π² Π²ΠΈΠ΄Π΅ строк. Для записи Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² Python информация Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Бписок Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

  • input.read() – Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² качСствС Π΅Π΄ΠΈΠ½ΠΎΠΉ строки;
  • input.readline() – ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку;
  • input.readlines() – ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» для чтСния Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ со списком строк;
  • .write() – запись строк;
  • .writelines() – запись всСх строк;
  • .close() – Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

Вся информация, содСрТащаяся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², прСдставлСна Π² Π²ΠΈΠ΄Π΅ строковых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для этого встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ int() ΠΈΠ»ΠΈ list(). А Ρ‚Π°ΠΊΠΆΠ΅ выраТСния для форматирования строк.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ close Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с flush ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ рСсурсы ОБ ΠΈ происходит Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄ происходит посрСдством ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ². Когда осущСствляСтся запись Π² Ρ„Π°ΠΉΠ» Π² Python, информация Π½Π΅ сразу ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° диск, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ закрытия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ записи Π² Ρ„Π°ΠΉΠ»

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовым Ρ„Π°ΠΉΠ»ΠΎΠΌ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ сСансС. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг – это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² IDLE. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Ρ‚ нСобходимости:

  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„ = open(Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„Π°ΠΉΠ».txtΒ», Β«wΒ»)
  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„.write(Β«Π›ΡŽΠ±ΠΎΠΉ тСкст\nΒ») #ЗаписываСм строки
  • 12
  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„.write(«И снова любой тСкст\nΒ»)
  • 20
  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„.close() #Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ;
  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„ = open(Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„Π°ΠΉΠ».txtΒ»)
  • >>>ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„.readline() #Π§ΠΈΡ‚Π°Π΅ΠΌ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ записано
  • Β«Π›ΡŽΠ±ΠΎΠΉ тСкст\nΒ»

ПослС записи строки Π² Ρ„Π°ΠΉΠ», Python 3.0 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… символов. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии этого Π½Π΅ происходит. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовался символ ΠΊΠΎΠ½Ρ†Π° строки \n. Π‘Π΅Π· Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ write Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ всС ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌ тСкстом.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· указания \n Π² ΠΊΠΎΠ½Ρ†Π΅, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ read:

  • >>>print(open(Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„Π°ΠΉΠ».txtΒ»).read())
  • любой тСкст;
  • ΠΈ снова любой тСкст;

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ посрСдством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ:

  • >>>for x in open(Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Ρ„Π°ΠΉΠ».txtΒ»):
  • print(x, end = Β« Β»)
  • любой тСкст
  • ΠΈ снова любой тСкст #КаТдая новая строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° с отступом.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² языка Python Π² Ρ„Π°ΠΉΠ»

Π’ тСкстовый Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ встроСнныС ΠΈΠ»ΠΈ созданныС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ запись Π² Ρ„Π°ΠΉΠ»Ρ‹ Π² Python построчно, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² строку. Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅.

  • >>>ΠΏΡ€ΠΈΠΌΠ΅Ρ€_2 = open(Β«Π²Ρ‚ΠΎΡ€ΠΎΠΉ_Ρ„Π°ΠΉΠ».txtΒ», Β«wΒ»)
  • >>>Бписок = [1,8, Β«rΒ»]
  • >>>C, B, P = 34, 90, 56
  • >>>Π‘Ρ‚Ρ€ = «Набор символов»
  • >>>ΠΏΡ€ΠΈΠΌΠ΅Ρ€_2.write(str(Бписок) + Β«\nΒ»)
  • 12
  • >>>ΠΏΡ€ΠΈΠΌΠ΅Ρ€_2.write(Β«%s, %s, %s\nΒ» % (C, B, P))
  • 11
  • >>>ΠΏΡ€ΠΈΠΌΠ΅Ρ€_2.write(Π‘Ρ‚Ρ€ + Β«\nΒ»)
  • 15
  • >>>ΠΏΡ€ΠΈΠΌΠ΅Ρ€_2.close()
  • >>>print(open(Β«Π²Ρ‚ΠΎΡ€ΠΎΠΉ_Ρ„Π°ΠΉΠ».txtΒ»).read())
  • [1, 8, Β«rΒ»]
  • 34, 90, 56
  • Π½Π°Π±ΠΎΡ€ символов

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сначала создаСтся Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«Π²Ρ‚ΠΎΡ€ΠΎΠΉ_Ρ„Π°ΠΉΠ».txtΒ» для записи. ΠŸΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния списка, строки ΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл. ΠŸΠ΅Ρ€Π΅Π΄ записью ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСобразуСтся Π² строку. Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ» открываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read.

По Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ осущСствляСтся Π² Python запись словаря Π² Ρ„Π°ΠΉΠ». НСобходимо Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ str ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘Π»ΠΎΠΆΠ½Π΅Π΅ всСго Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ… ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² словари ΠΈΠ»ΠΈ числа.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строки Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ языка ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ readline:

  • >>>L = open(Β«Π²Ρ‚ΠΎΡ€ΠΎΠΉ_Ρ„Π°ΠΉΠ».txtΒ»)
  • >>>F = L.readline()
  • >>>F
  • Β«34, 90, 56\nΒ»
  • >>>Numbers = F.split(Β«,Β») #По запятым Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° подстроки
  • >>>Numbers
  • [Β«34Β», Β«90Β», Β«56\nΒ»]
  • >>>Numbers = [int(x) for x in Numbers] #ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ вСсь список
  • >>>Numbers
  • [34, 90, 56]

Π—Π°ΠΏΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π’ состав стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ pickle. Π­Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт для записи ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ОсобСнно Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ довСряСтС источнику Ρ„Π°ΠΉΠ»Π°.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ прСдставляСт собой ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, которая автоматичСски Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого Ρ‚ΠΈΠΏΠ° (ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ), Π΅Π³ΠΎ достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ pickle:

  • >>>Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ = {«восСмь»: 8, Β«Ρ‚Ρ€ΠΈΒ»: 3, «ноль»: 0}
  • >>>Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ
  • {«восСмь»: 8, Β«Ρ‚Ρ€ΠΈΒ»: 3, «ноль»: 0}
  • >>>Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ = open(Β«ΠΌΠΎΠΉ_Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.pklΒ», Β«wbΒ»)
  • >>>import pickle
  • >>>pickle.dump(Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚)
  • >>>Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.close()
  • >>>Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ = open(Β«ΠΌΠΎΠΉ_Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.pklΒ», Β«rbΒ»)
  • >>>Π” = pickle.load(Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚)
  • >>>Π”
  • {«восСмь»: 8, Β«Ρ‚Ρ€ΠΈΒ»: 3, «ноль»: 0}

Π‘ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π½Π΅Ρ‚ нСобходимости ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Он сам выполняСт ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² строку Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Для этого Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… open указываСтся wb – write binary.

Аналогично pickle, Β«ΠΊΠΎΠ½ΡΠ΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля Python – JSON. Π—Π°ΠΏΠΈΡΡŒ Π² Ρ„Π°ΠΉΠ» осущСствляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ dump. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сохраняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² строку JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

  • >>>import json
  • >>>Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ = {«восСмь»: 8, Β«Ρ‚Ρ€ΠΈΒ»: 3, «ноль»: 0}
  • >>>with open(Β«ΠΌΠΎΠΉ_Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.jsonΒ», Β«wΒ») as ΠΌ_Π΄:
  • >>>json.dump(Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ, ΠΌ_Π΄)

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС способы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. НапримСр, опСрация сканирования, организация Ρ†ΠΈΠΊΠ»ΠΎΠ² записи. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ вСсь ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ сСансС функциями help ΠΈΠ»ΠΈ dir. Π’Π°ΠΊΠΆΠ΅ Π² арсСналС языка Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹, — сокСты, ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° с использованиСм Python

Requests — это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ HTTP-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Python с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями. Одно ΠΈΠ· Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° с использованиСм URL-адрСса Ρ„Π°ΠΉΠ»Π°.
Установка: ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ запросов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip, Π½Π°Π±Ρ€Π°Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

 запросов Π½Π° установку пипса 

Или скачайтС прямо ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ установитС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π­Ρ‚ΠΎΡ‚ нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, написанный Π²Ρ‹ΡˆΠ΅, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (ΠΏΠ°ΠΏΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится этот скрипт), ΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

ВсС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это URL-адрСс источника изобраТСния. (Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ URL-адрСс источника изобраТСния, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ Π²Ρ‹Π±Ρ€Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния».)


Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ большиС Ρ„Π°ΠΉΠ»Ρ‹

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π° HTTP ( r.content ) — это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ строка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² случаС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ вносим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ r.iter_content для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ частям с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°.
  •  r = requests.get (URL, ΠΏΠΎΡ‚ΠΎΠΊ = True) 

    Установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° stream Π½Π° True ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², Π° соСдинСниС останСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ.Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ считывания всСго содСрТимого сразу Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². Ѐиксированный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΏΠΎΠΊΠ° выполняСтся итСрация r.iter_content .

    Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    ΠΈΠΌΠΏΠΎΡ€Ρ‚ запросов

    r = requests.get (file_url, stream = True )

    с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ( "ΠΏΠΈΡ‚ΠΎΠ½.pdf " , " wb " ) ΠΊΠ°ΠΊ pdf:

    для Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π² r.iter_content (chunk_size = 1024 ):

    Ссли Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚:

    pdf.write (кусок)

    Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎ

    Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ заинтСрСсованы Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ всСх Π²ΠΈΠ΄Π΅ΠΎΠ»Π΅ΠΊΡ†ΠΈΠΉ, доступных Π½Π° этой Π²Π΅Π±-страницС.ВсС Π°Ρ€Ρ…ΠΈΠ²Ρ‹ этой Π»Π΅ΠΊΡ†ΠΈΠΈ доступны здСсь. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ сначала ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ Π²Π΅Π±-страницу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ всС ссылки Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

    ΠΈΠΌΠΏΠΎΡ€Ρ‚ запросов

    ΠΈΠ· BS4 ΠΈΠΌΠΏΠΎΡ€Ρ‚ BeautifulSoup

    def get_video_links ():

    r = запросов.ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ (archive_url)

    суп = BeautifulSoup (r.content, 'html5lib' )

    ссылок = soup.findAll ( 'a' )

    video_links = [archive_url + ссылка [ 'href' ] для ссылка Π² ссылок Ссли ссылка [ 'href ' ].заканчиваСтся с ( 'mp4' )]

    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ video_links

    def download_video_series (video_links):

    для ссылка Π² video_links:

    имя_Ρ„Π°ΠΉΠ»Π° = ссылка.сплит ( '/' ) [ - 1 ]

    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°:% s" % имя_Ρ„Π°ΠΉΠ»Π°)

    r = request.get (ссылка, ΠΏΠΎΡ‚ΠΎΠΊ = True )

    с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (имя_Ρ„Π°ΠΉΠ»Π°, 'wb' ) ΠΊΠ°ΠΊ f:

    для Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° дюйм r.iter_content (Ρ€Π°Π·ΠΌΠ΅Ρ€_Π³Ρ€ΡƒΠ±Π° = 1024 * 1024 ):

    Ссли Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚:

    F. запись (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚)

    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "% s Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ! \ N" % имя_Ρ„Π°ΠΉΠ»Π°)

    Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ( «ВсС Π²ΠΈΠ΄Π΅ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹!Β» )

    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚

    , Ссли __name__ = = "__main__" :

    video_links = get_video_links ()

    download_video_series (video_links)

    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ запросов для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Π΅Π±-Ρ„Π°ΠΉΠ»ΠΎΠ²:

    Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠ³ прСдоставил Нихил ΠšΡƒΠΌΠ°Ρ€.Если Π²Π°ΠΌ нравится GeeksforGeeks, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ внСсти свой Π²ΠΊΠ»Π°Π΄, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ provide.geeksforgeeks.org ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ Π½Π° [email protected]. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ваша ΡΡ‚Π°Ρ‚ΡŒΡ появляСтся Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС GeeksforGeeks, ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π³ΠΈΠΊΠ°ΠΌ.

    ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, обсуТдСнной Π²Ρ‹ΡˆΠ΅.

    Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ! Π£ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ свои основы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python Programming Foundation ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы.

    Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ собСсСдованию. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ свои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python DS .


    Π“Π»Π°Π²Π° 8 — Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ — докумСнтация Python 101 1.0

    Π­Ρ‚Π° Π³Π»Π°Π²Π° Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с Ρ‚Π΅ΠΌΠΎΠΉ чтСния ΠΈ записи Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° ТСстком дискС. Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Python ΠΎΡ‡Π΅Π½ΡŒ просты. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

    Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

    Python ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ open , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для открытия Ρ„Π°ΠΉΠ»Π° для чтСния.Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ тСкстовый Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«test.txtΒ» со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТаниСм:

     Π­Ρ‚ΠΎ тСстовый Ρ„Π°ΠΉΠ»
    строка 2
    строка 3
    эта строка Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ оставлСна ​​пустой
     

    Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ open для чтСния:

     handle = open ("test.txt")
    handle = open (r "C: \ Users \ mike \ py101book \ data \ test.txt", "r")
     

    Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ test.txt откроСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π­Ρ‚ΠΎ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ .ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Python автоматичСски Π½Π°ΠΉΠ΄Π΅Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ скрипт, test.txt . Если ΠΎΠ½ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π΅Π³ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ IOError.

    Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, Π½ΠΎ Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ начинаСтся с Π±ΡƒΠΊΠ²Ρ‹ Β«rΒ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Python ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» строку ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ строку. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ строки ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ строки:

     >>> print ("C: \ Users \ mike \ py101book \ data \ test.тСкст")
    C: \ Users \ mike \ py101book \ data est.txt
    >>> print (r "C: \ Users \ mike \ py101book \ data \ test.txt")
    C: \ Users \ mike \ py101book \ data \ test.txt
     

    Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ строку, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ нСдопустимый ΠΏΡƒΡ‚ΡŒ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ происходит? Π§Ρ‚ΠΎ ΠΆ, ΠΊΠ°ΠΊ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΈΠ· Π³Π»Π°Π²Ρ‹, посвящСнной строкам, Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«nΒ» ΠΈΠ»ΠΈ Β«tΒ». Π’ этом случаС ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π±ΡƒΠΊΠ²Ρƒ Β«tΒ» (Ρ‚. Π•. Π’Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ), поэтому строка ΠΏΠΎΡΠ»ΡƒΡˆΠ½ΠΎ добавляСт Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡƒΡ‚ΠΈ ΠΈ Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚ Π΅Π³ΠΎ Π·Π° нас.

    Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π±ΡƒΠΊΠ²ΠΎΠΉ Β«rΒ». Π­Ρ‚ΠΎ сообщаСт open , Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ явный. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅ΠΌ Ρ„Π°ΠΉΠ»!

    ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки Π² сцСнарий Python ΠΈ сохранитС Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„Π°ΠΉΠ» test.txt:

     handle = open ("test.txt", "r")
    data = handle.read ()
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π΄Π°Π½Π½Ρ‹Π΅)
    handle.close ()
     

    Если Π²Ρ‹ запуститС это, ΠΎΠ½ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ вСсь Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ строку Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ data .Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ дСскриптор Ρ„Π°ΠΉΠ»Π°. Π’Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ дСскриптор Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ странныС ошибки Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Python просто Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ строку Π·Π° Ρ€Π°Π·, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС строки Π² список Python ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ частям. ПослСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ памяти ПК.

    Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы чтСния Ρ„Π°ΠΉΠ»ΠΎΠ².

     handle = open ("test.txt", "r")
    data = handle.readline () # Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π΄Π°Π½Π½Ρ‹Π΅)
    handle.close ()
     

    Если Π²Ρ‹ запуститС этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ½ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку вашСго тСкстового Ρ„Π°ΠΉΠ»Π° ΠΈ распСчатаСт Π΅Π΅. Π­Ρ‚ΠΎ Π½Π΅ слишком ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ readlines () дСскриптора Ρ„Π°ΠΉΠ»Π°:

     handle = open ("test.txt", "r")
    data = handle.readlines () # Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π’Π‘Π• строки!
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π΄Π°Π½Π½Ρ‹Π΅)
    handle.close ()
     

    ПослС запуска этого ΠΊΠΎΠ΄Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список Python, Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ Π½Π° экранС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ readlines : список! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» нСбольшими частями.

    Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ частям

    Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠΎ частям — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ». Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ научимся Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» построчно, Π° Π·Π°Ρ‚Π΅ΠΌ научимся Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρƒ Π·Π° Ρ€Π°Π·. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» для Π² нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

     handle = open ("test.txt", "r")
    
    для Π»ΠΈΠ½ΠΈΠΈ Π² Ρ€ΡƒΡ‡ΠΊΠ΅:
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)
    
    handle.close ()
     

    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ дСскриптор Ρ„Π°ΠΉΠ»Π°, доступный Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» для , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ.Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Python (строки, списки, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΠΊΠ»ΡŽΡ‡ΠΈ Π² словарС ΠΈ Ρ‚. Π”.). Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ довольно просто, ΠΏΡ€Π°Π²Π΄Π°? А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся ΠΏΠΎ частям!

     handle = open ("test.txt", "r")
    
    Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ True:
        data = handle.read (1024)
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π΄Π°Π½Π½Ρ‹Π΅)
        Ссли Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅:
            ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ
     

    Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» Python while для чтСния ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π° Ρ„Π°ΠΉΠ»Π° Π·Π° Ρ€Π°Π·. Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ — это 1024 Π±Π°ΠΉΡ‚Π° ΠΈΠ»ΠΈ символа. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PDF.

    Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

    Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΡ‡Π΅Π½ΡŒ просто. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Ρ„Π°ΠΉΠ»Π°:

     handle = open ("test.pdf", "rb")
     

    Π˜Ρ‚Π°ΠΊ, Π½Π° этот Ρ€Π°Π· ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π° rb , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅-Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ . Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ PDF-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с ПК Π½Π° ПК.

    НаписаниС Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Python

    Если Π²Ρ‹ слСдовали инструкциям, Π²Ρ‹, вСроятно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ„Π»Π°Π³ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° для записи Ρ„Π°ΠΉΠ»ΠΎΠ²: Β«wΒ» ΠΈ Β«wbΒ» для Ρ€Π΅ΠΆΠΈΠΌΠ° записи ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° записи.Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

    Π’ΠΠ˜ΠœΠΠΠ˜Π• : ΠŸΡ€ΠΈ использовании Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Β«wΒ» ΠΈΠ»ΠΈ Β«wbΒ», Ссли Ρ„Π°ΠΉΠ» ΡƒΠΆΠ΅ сущСствуСт, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан Π±Π΅Π· прСдупрСТдСния! Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Python os . Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» os.path.exists Π² Π“Π»Π°Π²Π° 16 .

     handle = open ("test.txt", "w")
    handle.write (Β«Π­Ρ‚ΠΎ тСст!Β»)
    handle.close ()
     

    Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ! ВсС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ здСсь сдСлали, это ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ„Π°ΠΉΠ»Π° Π½Π° Β«wΒ» ΠΈ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ write дСскриптора Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСкст Π² Ρ„Π°ΠΉΠ».Π£ дСскриптора Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Writelines , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСскриптор Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° диск ΠΏΠΎ порядку.

    ИспользованиС with Operator

    Python ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΡƒΡŽ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ с , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для упрощСния чтСния ΠΈ записи Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ создаСт Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ диспСтчСр контСкста Π² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ„Π°ΠΉΠ» для вас, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

     с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ("тСст.txt ") ΠΊΠ°ΠΊ file_handler:
        для строки Π² file_handler:
            ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)
     

    Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ странный, Π½ΠΎ Π²Ρ‹ быстро Π΅Π³ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅. Π’ основном ΠΌΡ‹ замСняСм:

     handle = open ("test.txt")
     

    с этим:

     с open ("test.txt") Π² качСствС file_handler:
     

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСтС, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… с Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π° .Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚Π΅ этот Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, дСскриптор Ρ„Π°ΠΉΠ»Π° закроСтся, ΠΈ Π²Ρ‹ большС Π½Π΅ смоТСтС Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π”Π°, Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ дСскриптор Ρ„Π°ΠΉΠ»Π° явно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ это автоматичСски! ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· этой Π³Π»Π°Π²Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ .

    ВыявлСниС ошибок

    Иногда, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ нСприятности. Π€Π°ΠΉΠ» Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ ошибка Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.Когда это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, вСроятно, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка IOError . Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ошибки ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом ΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с . Подсказка: идСя Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°!

     ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:
        file_handler = open ("test.txt")
        для строки Π² file_handler:
            ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)
    ΠΊΡ€ΠΎΠΌΠ΅ IOError:
        print (Β«ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°!Β»)
    Ну Π½Π°ΠΊΠΎΠ½Π΅Ρ† Ρ‚ΠΎ:
        file_handler.close ()
     

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΡŒ конструкции try / except .ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС Π½Π° экран. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° finally . Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ с :

    .
     ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:
        с open ("test.txt") Π² качСствС file_handler:
            для строки Π² file_handler:
                ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)
    ΠΊΡ€ΠΎΠΌΠ΅ IOError:
        print (Β«ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°!Β»)
     

    Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΌΡ‹ просто ΠΎΠ±Π΅Ρ€Π½ΡƒΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.Π Π°Π·Π½ΠΈΡ†Π° здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ finally , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ диспСтчСр контСкста ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ это Π·Π° нас.

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    На этом этапС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ старый ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ со стилСм . Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ встрСтитС ΠΎΠ±Π° стиля Π² Π΄ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, поставляСмыС с Python. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с использованиСм Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

    Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Π² Python

    Π­Ρ‚ΠΎ руководство написано с использованиСм Python 3.6

    Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ просмотр ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях.

    Π’ этом руководствС ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с файловая систСма Π² Python. НадСюсь, это даст Π²Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· интСрСсных Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python язык программирования.

    РСкурсивный просмотр ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

    Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ рСкурсивный просмотр ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π·Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ количСству ΠΏΡ€ΠΈΡ‡ΠΈΠ½.

    Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° всСх Ρ„Π°ΠΉΠ»ΠΎΠ²:

      ## Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠšΠΠ–Π”Π«Π™ Ρ„Π°ΠΉΠ» Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅
    ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
    
    ## Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ "/" Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ
    для Ρ„Π°ΠΉΠ»Π° Π² os.walk ("/"):
        Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»)
      

    Π’Ρ‹Ρ…ΠΎΠ΄

    Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ 3 Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°: ['test2.txt, 'test.txt', 'main.py']

      >>> ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
    >>> os.walk ("./")
    <ΠΎΠ±Ρ…ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° 0x10457c7d8>
    >>> для Ρ„Π°ΠΉΠ»Π° Π² os.walk ("./"):
    ...     Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»)
    ...
    ('./', [], ['test2.txt', 'test.txt', 'main.py'])
      

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°?

    Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ Π²ΠΎΠΉΡ‚ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Python.

    Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ os.path.isfile () , которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ False , Ссли это ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈΠ»ΠΈ True , Ссли это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„Π°ΠΉΠ».

      >>> ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
    >>> os.path.isfile ("/")
    Π›ΠΎΠΆΡŒ
    >>> os.path.isfile ("./ main.py")
    ΠŸΡ€Π°Π²Π΄Π°
      

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π° вашСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ os.path.exists () , ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

      >>> ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
    >>> os.path.exists ("./ main.py")
    ΠŸΡ€Π°Π²Π΄Π°
    >>> os.path.exists ("./ dud.py")
    Π›ΠΎΠΆΡŒ
      

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² Python

    Допустим, Π²Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой своя. Π§Ρ‚ΠΎ ΠΆ, Π½Π΅ Π±ΠΎΠΉΡ‚Π΅ΡΡŒ, это Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ os.makedirs () .

     , Ссли нС os.path.exists ('my_dir'):
        os.makedirs ('my_dir')
      

    Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, сущСствуСт Π»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ my_dir , Ссли Π΅Π³ΠΎ Π½Π΅ сущСствуСт, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ дальшС ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ os.makedirs ('my_dir') Π² Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для нас наш Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

    Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Если Π±Ρ‹ Π²Ρ‹ Π±Ρ‹Π»ΠΈ создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π³Π΄Π΅-Ρ‚ΠΎ Π½Π΅ сущСствуСт ΠΈΠ½Π°Ρ‡Π΅, ΠΏΠ΅Ρ€Π΅Π΄ вашим Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ os.makedirs ('my_dir') Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ OS Ошибка Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ.

    Однако ΠΏΠΎ большСй части Ρƒ вас всС Π±ΡƒΠ΄Π΅Ρ‚ Π² порядкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄, упомянутый Π²Ρ‹ΡˆΠ΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ особСнно остороТными ΠΈ ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ wrap Π²Ρ‹ Π·Π²ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° os.makedirs ('my_dir') Π² ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ... ΠΊΡ€ΠΎΠΌΠ΅ , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

     , Ссли нС os.path.exists ('my_dir'):
        ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
            os.makedirs ('my_dir')
        ΠΊΡ€ΠΎΠΌΠ΅ OSError ΠΊΠ°ΠΊ e:
            Ссли e.errno! = errno.EEXIST:
                ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ
      

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Если Π²Ρ‹ нашли это руководство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½ΠΈΠΆΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅ @Elliot_f.


    Бписок Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

    Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Python, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΌΠ½Π΅ Π»Π΅Π³ΠΊΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π§Ρ‚ΠΎΠ±Ρ‹ просто ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π² ΠΈΠ³Ρ€Ρƒ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ os , subprocess , fnmatch ΠΈ pathlib . Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΈΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚, ΠΊΠ°ΠΊ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

    ИспользованиС os.walk ()

    ΠœΠΎΠ΄ΡƒΠ»ΡŒ os содСрТит Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Один ΠΈΠ· Π½ΠΈΡ… — это walk () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡΡΡŒ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π»ΠΈΠ±ΠΎ свСрху Π²Π½ΠΈΠ·, Π»ΠΈΠ±ΠΎ снизу Π²Π²Π΅Ρ€Ρ… (с настройкой ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ свСрху Π²Π½ΠΈΠ·).

    os.walk () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов. Он содСрТит имя ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, список ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ список ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’ листингС 1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго Ρ‚Ρ€Π΅Ρ… строк ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Python 2 ΠΈ 3.

    Листинг 1: ΠžΠ±Ρ…ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ os.walk ()

      ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
    
    для root, dirs, Ρ„Π°ΠΉΠ»ΠΎΠ² Π² os.Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ("."):
        для ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»Π°Ρ…:
            ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (имя Ρ„Π°ΠΉΠ»Π°)
      

    ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ‡Π΅Ρ€Π΅Π· подпроцСсс

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ : Π₯отя это допустимый способ пСрСчислСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π΅Π³ΠΎ Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊ ΠΏΡƒΡ‚Π΅ΠΌ внСдрСния ΠΊΠΎΠΌΠ°Π½Π΄.

    Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ описано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² Python, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ подпроцСсса позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. БистСмная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π² этом случаС, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Бписок Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

      $ ls -p.| grep -v / $
      

    Команда ls -p. пСрСчисляСт Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ добавляСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ / Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ понадобится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ этого Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ grep , которая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ -v / $ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ всС ΠΈΠΌΠ΅Π½Π° записСй, Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ /. ЀактичСски, / — это рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт всСм строкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат символ / Π² качСствС самого послСднСго символа ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½Ρ†ΠΎΠΌ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставлСн ΠΊΠ°ΠΊ /.

    ΠœΠΎΠ΄ΡƒΠ»ΡŒ подпроцСсса позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° subprocess.Popen () ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ процСсс ΠΈ опрСдСляСт Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ stdin ΠΈ stdout .

    Π’ листингС 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ это Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ€Π²Π°Ρ пСрСмСнная ls опрСдСляСтся ΠΊΠ°ΠΊ процСсс, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ls -p. , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выводится Π² ΠΊΠ°Π½Π°Π». Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°Π½Π°Π» stdout ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ подпроцСсс .Π’Π Π£Π‘ΠšΠ . Вторая пСрСмСнная grep Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСтся ΠΊΠ°ΠΊ процСсс, Π½ΠΎ вмСсто этого выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ grep -v / $ .

    Для чтСния Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls ΠΈΠ· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΊΠ°Π½Π°Π» stdin grep опрСдСляСтся ΠΊΠ°ΠΊ ls.stdout . НаконСц, пСрСмСнная endOfPipe считываСт Π²Ρ‹Π²ΠΎΠ΄ grep ΠΈΠ· grep.stdout , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выводится Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄ поэлСмСнтно Π² Ρ†ΠΈΠΊΠ»Π΅ для Π½ΠΈΠΆΠ΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 2 .

    Листинг 2: ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… процСссов, связанных с ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ

      ΠΈΠΌΠΏΠΎΡ€Ρ‚ подпроцСсса
    
    # опрСдСляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls
    ls = subprocess.Popen (["ls", "-p", "."],
                          stdout = subprocess.PIPE,
                         )
    
    # опрСдСляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ grep
    grep = subprocess.Popen (["grep", "-v", "/ $"],
                            stdin = ls.stdout,
                            stdout = subprocess.PIPE,
                            )
    
    # Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ†Π° ΠΊΠ°Π½Π°Π»Π° (stdout)
    endOfPipe = grep.стандартный Π²Ρ‹Π²ΠΎΠ΄
    
    # Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ„Π°ΠΉΠ»Ρ‹ построчно
    для строки Π² endOfPipe:
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)
      

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

      $ python find-files3.py
    find-files2.py
    find-files3.py
    find-files4.py
    ...
      

    Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ с Python 2, Ρ‚Π°ΠΊ ΠΈ с Python 3, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ? Π’ΠΎΠ³Π΄Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.

    ОбъСдинСниС os и fnmatch

    Как Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ подпроцСссы, элСгантно, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большого количСства ΠΊΠΎΠ΄Π°.ВмСсто этого Π΄Π°Π²Π°ΠΉΡ‚Π΅ объСдиним ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ os ΠΈ fnmatch . Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ с Python 2 ΠΈ 3.

    Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ шага ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π²Π° модуля os ΠΈ fnmatch . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ опрСдСляСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ os.listdir () , Π° Ρ‚Π°ΠΊΠΆΠ΅ шаблон для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ Ρ†ΠΈΠΊΠ»Π΅ для ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ список записСй, хранящихся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ listOfFiles .

    НаконСц, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fnmatch ΠΌΡ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‰Π΅ΠΌ, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ записи Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. Листинг 3 содСрТит скрипт Python, Π° ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3 ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄.

    Листинг 3: Бписок Ρ„Π°ΠΉΠ»ΠΎΠ² с использованиСм модуля os ΠΈ fnmatch

      ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ, fnmatch
    
    listOfFiles = os.listdir ('.')
    pattern = "* .py"
    для записи в listOfFiles:
        Ссли fnmatch.fnmatch (запись, шаблон):
                ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (запись)
      

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Листинга 3

      $ python2 find-files.Ρ€Ρƒ
    find-files.py
    find-files2.py
    find-files3.py
    ...
      

    ИспользованиС os.listdir () ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

    ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ — это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохраняСт своС состояниС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… статСй, Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Python.

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ listdir () модуля os с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Код Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±Π΅ΠΈΠΌΠΈ вСрсиями Python 2 ΠΈ 3.

    Π Π°Π±ΠΎΡ‚Π° с PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Python: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ страниц

    Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· сСрии, посвящСнной Ρ€Π°Π±ΠΎΡ‚Π΅ с PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π½Π° Python:

    Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° PDF

    БСгодня Portable Document Format (PDF) относится ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….Π’ 1990 Π³ΠΎΠ΄Ρƒ структура Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° PDF Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Adobe. ИдСя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° PDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ / Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ для ΠΎΠ±Π΅ΠΈΡ… сторон, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² процСссС ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ — создатСля, Π°Π²Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ отправитСля ΠΈ получатСля. PDF являСтся ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° PostScript ΠΈ стандартизирован ΠΊΠ°ΠΊ ISO 32000-2: 2017.

    ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

    Для Linux доступны ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ pdftk ΠΈ pdfgrep. Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ испытываСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ создании собствСнного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, основанного Π½Π° Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PDF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² свободном доступС.

    Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ — Π½Π°Ρ‡Π°Π»ΠΎ нСбольшой сСрии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны эти ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΌΡ‹ сосрСдоточимся Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ PDF-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ (тСкст ΠΈ изобраТСния), Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ страницы ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ страницы. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ водяного Π·Π½Π°ΠΊΠ° Π½Π° основС Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ посвящСна ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ написанию / созданию PDF-Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объСдинСниС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… страниц Π² Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

    Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

    Набор доступных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для инструмСнтов, ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ PDF, связанных с Python, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΈ Π½ΡƒΠΆΠ½ΠΎ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ постоянно. На основании нашСго исслСдования Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²:

    • PyPDF2: Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ содСрТимого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, раздСлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ страницам, объСдинСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ страниц ΠΈ добавлСния водяных Π·Π½Π°ΠΊΠΎΠ². PyPDF2 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

    • PDFMiner: ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написан Π½Π° Python ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Python 2.4. Для Python 3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ PDFMiner.six. Оба ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ PDF 1.7, Π° Ρ‚Π°ΠΊΠΆΠ΅ языков CJK (китайский, японский ΠΈ корСйский) ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² (Type1, TrueType, Type3 ΠΈ CID).

    • PDFQuery: Он описываСт сСбя ΠΊΠ°ΠΊ Β«Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для парсинга PDFΒ», которая Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для PDFMiner, lxml ΠΈ pyquery.Π•Π³ΠΎ Ρ†Π΅Π»ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½Π° — Β«Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² PDF-Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΊΠΎΠ΄Π°Β».

    • tabula-py: это простая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Python для tabula-java, которая ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ· PDF-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² Pandas DataFrames. Он Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» PDF Π² Ρ„Π°ΠΉΠ» CSV / TSV / JSON.

    • pdflib для Python: Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Poppler, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ для Π½Π΅Π³ΠΎ привязки Python. Он позволяСт Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Π΅Π³ΠΎ коммСрчСским ΠΊΡƒΠ»ΠΎΠ½ΠΎΠΌ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.

    • PyFPDF: Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° Python. ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ FPDF PHP, Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстного Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ PDFlib с мноТСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², скриптов ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ….

    • PDFTables: коммСрчСский сСрвис, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† Π² Π²ΠΈΠ΄Π΅ PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PDFTables Π² качСствС SAAS.

    • PyX — графичСский ΠΏΠ°ΠΊΠ΅Ρ‚ Python: PyX — это ΠΏΠ°ΠΊΠ΅Ρ‚ Python для создания Ρ„Π°ΠΉΠ»ΠΎΠ² PostScript, PDF ΠΈ SVG.Он сочСтаСт Π² сСбС Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠ΄Π΅Π»ΠΈ рисования PostScript с интСрфСйсом TeX / LaTeX. На основС этих ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² строятся слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ созданиС 2D ΠΈ 3D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ качСствС.

    shutil — высокоуровнСвыС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ — докумСнтация Python 3.9.1

    Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Lib / shutil.py


    ΠœΠΎΠ΄ΡƒΠ»ΡŒ shutil ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ряд высокоуровнСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ².Π’ частности, прСдусмотрСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ см. Π’Π°ΠΊΠΆΠ΅ os ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

    ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

    Π”Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ копирования Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ высокого уровня ( shutil.copy () , shutil.copy2 () ) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°.

    На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… POSIX это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ. ΠΊΠ°ΠΊ ACL. Π’ Mac OS Π²ΠΈΠ»ΠΊΠ° рСсурса ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ рСсурсы Π±ΡƒΠ΄ΡƒΡ‚ потСряны, Π° Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ΄Ρ‹ создатСля Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.Π’ Windows Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², списки управлСния доступом ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

    ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

    ΡˆΡƒΡ‚ΠΈΠ»ΡŒ. copyfileobj ( fsrc , fdst [, Π΄Π»ΠΈΠ½Π° ])

    Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° fsrc Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ fdst . Π¦Π΅Π»ΠΎΠ΅ число , Π΄Π»ΠΈΠ½Π° , Ссли Π·Π°Π΄Π°Π½ΠΎ, являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π°. Π’ частности, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π”Π»ΠΈΠ½Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· зацикливания Π½Π° исходных Π΄Π°Π½Π½Ρ‹Ρ… Π² куски; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎ частям, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ памяти ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли тСкущая позиция Ρ„Π°ΠΉΠ»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° fsrc Π½Π΅ 0, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТимоС ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

    ΡˆΡƒΡ‚ΠΈΠ»ΡŒ. Ρ„Π°ΠΉΠ» ΠΊΠΎΠΏΠΈΠΈ ( src , dst , * , follow_symlinks = True )

    Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ содСрТимоС (Π±Π΅Π· ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…) Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ src Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ dst ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ dst Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным способом. src ΠΈ dst — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° ΠΏΡƒΡ‚ΠΈ, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΉ, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ строк.

    dst Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°; посмотритС Π½Π° копия () для ΠΊΠΎΠΏΠΈΠΈ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ. Если src ΠΈ dst ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ», SameFileError возбуТдаСтся.

    ΠœΠ΅ΡΡ‚ΠΎ назначСния Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ доступно для записи; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС — OSError ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π΅Π½ΠΎ. Если dst ΡƒΠΆΠ΅ сущСствуСт, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½.Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ устройства ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ скопировано с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

    Если follow_symlinks являСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ ΠΈ src являСтся символичСской ссылкой, Π±ΡƒΠ΄Π΅Ρ‚ создана новая символичСская ссылка вмСсто копирования file src ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°.

    Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Π°ΡƒΠ΄ΠΈΡ‚Π° shutil.copyfile с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ src , dst .

    ИзмСнСно Π² вСрсии 3.3: Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ IOError вмСсто OSError .Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ follow_symlinks . Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ dst .

    ИзмСнСно Π² вСрсии 3.4: ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ SameFileError вмСсто Error . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ подкласс послСднСго, это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимо.

    ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ shutil. SameFileError

    Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли источник ΠΈ мСсто назначСния Π² copyfile () это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ».

    ΡˆΡƒΡ‚ΠΈΠ»ΡŒ. copymode ( src , dst , * , follow_symlinks = True )

    Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±ΠΈΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈΠ· src Π² dst . Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π°, Π²Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹. src ΠΈ dst — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° ΠΏΡƒΡ‚ΠΈ, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΉ Π΄Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ строк. Если follow_symlinks Π»ΠΎΠΆΠ½ΠΎ, Π° src ΠΈ dst ΡΠ²Π»ΡΡŽΡ‚ΡΡ символичСскими ссылками, copymode () попытаСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ самого dst (скорСС Ρ‡Π΅ΠΌ Ρ„Π°ΠΉΠ», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚).Π­Ρ‚Π° функция доступна Π½Π΅ Π½Π° всСх ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°; см. copystat () для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Если copymode () Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ символичСскиС ссылки Π½Π° локальной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ это просят ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΎΠ½ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт ΠΈ вСрнСтся.

    Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Π°ΡƒΠ΄ΠΈΡ‚Π° shutil.copymode с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ src , dst .

    ИзмСнСно Π² вСрсии 3.3: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ follow_symlinks .

    ΡˆΡƒΡ‚ΠΈΠ»ΡŒ. copystat ( src , dst , * , follow_symlinks = True )

    Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±ΠΈΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, врСмя послСднСго доступа, врСмя послСднСго измСнСния ΠΈ Ρ„Π»Π°Π³ΠΈ ΠΎΡ‚ src Π΄ΠΎ dst . Π’ Linux copystat () Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Β«Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹Β», Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π°, Π²Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹. src ΠΈ dst — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ строк.

    Если follow_symlinks Π»ΠΎΠΆΠ½ΠΎ, Π° src ΠΈ dst ΠΎΠ±Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ символичСским ссылкам, copystat () Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с сами символичСскиС ссылки, Π° Π½Π΅ Ρ„Π°ΠΉΠ»Ρ‹, символичСскиС ссылки относятся ΠΊ — Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· src символичСская ссылка ΠΈ запись ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² dst символичСская ссылка.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

    НС всС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ символичСскиС ссылки. Π‘Π°ΠΌ Python ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ доступна локально.

    • Если os.chmod Π² os.supports_follow_symlinks — это True , copystat () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ символичСской ссылки.

    • Если os.utime Π² os.supports_follow_symlinks Ρ€Π°Π²Π½ΠΎ True , copystat () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ послСдний доступ ΠΈ врСмя ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ символичСской ссылки.

    • Если os.chflags Π² os.supports_follow_symlinks — это True , copystat () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ символичСская ссылка.

    ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *