Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

WBOY
WBOYke hadapan
2023-04-14 22:58:081724semak imbas

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Terfikir secara tiba-tiba, apabila anda memasangkan USB, bolehkah anda melaksanakan program secara automatik pada USB. Selepas menyemak, saya mendapati bahawa ia hanya tersedia di Windows Anda juga boleh mencari butiran (kata kunci carian usb autorun). Walau bagaimanapun, jika saya mahu, sebagai contoh, apabila USB dipalamkan, fail penting dalam USB akan disalin secara automatik ke tempatan atau dimuat naik ke pelayan di latar belakang tanpa disedari sesiapa, maka bantuan perisian khas diperlukan.

Jadi saya terfikir sendiri, bolehkah saya menulis program dalam python dan biarkan ia berjalan di latar belakang. Setiap kali pemacu kilat USB dimasukkan, fail penting di dalamnya akan disalin secara automatik.

Bagaimana untuk menentukan sama ada cakera U dimasukkan?

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Mula-mula kita buka terminal komputer dan masukkan direktori /Volumes. Pada masa ini, masukkan cakera U, anda boleh mendapati bahawa ia dipasang di bawah direktori ini, iaitu, kita hanya perlu mengimbas direktori ini pada masa yang ditetapkan Apabila folder baharu muncul dalam direktori ini, berkemungkinan a Cakera U telah dimasukkan.

Reka bentuk saya adalah seperti ini Gunakan fungsi time.sleep(3) untuk memastikan program berjalan, dan semak direktori /Volumes/ setiap tiga saat, Salin ke folder lain.

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Seperti yang ditunjukkan oleh tajuk, kami benar-benar hanya menggunakan 10 baris (sebenarnya 11 baris, untuk membuat:) untuk melengkapkan "virus" ini. Kita boleh mendapati bahawa direktori dalam USB semuanya diletakkan dalam direktori rumah setengah minit selepas dimasukkan.

Bagaimana untuk menyalin fail secara terpilih?

Kami baru sahaja menulis skrip yang sangat mudah untuk menguji kebolehlaksanaan idea ini, tetapi masih terdapat masalah. Sebab mengapa kami dapat menyalin semua fail dalam pemacu kilat USB dengan cepat adalah kerana terdapat hanya dua atau tiga fail dalam pemacu kilat USB, dan saiznya tidak melebihi 15M. Jika terdapat banyak filem, muzik dan fail yang kami tidak perlukan dalam cakera USB sasaran, program kami sepatutnya boleh melangkaunya dan hanya memilih beberapa yang penting seperti .docx seperti fail .ppt, atau hanya menyalin yang baru-baru ini. fail yang diubah suai, atau kecualikan semua fail yang bersaiz lebih besar daripada 5M. Bolehkah kita melakukannya dalam python?

Mari kita beri contoh.

Saya mencipta folder testwalk dalam direktori tertentu Terdapat tiga fail file123.txt dan tiga folder folder123 Terdapat fail file4.txt dan folder4 dalam folder1

. Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Sekarang mari kita ujinya.

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

root menyimpan lokasi semasa ia akan menggunakan semua folder di bawah ./testwalk/ sebagai direktori akar dan cari ke bawah.

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Lihat dir secara individu

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Lihat fail secara individu

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Baiklah, sekarang kita perlu recurse folder USB, cari semua fail, semak saiz, jika lebih kecil daripada, contohnya, 3M, salin ke rumah, jika lebih besar , buang.

modul shuttil

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Sekarang mari kita ambil folder tadi sebagai contoh Jika kita ingin menyalin file1.txt ke folder2 :

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Terdapat banyak alatan lain dalam shutil yang tidak akan saya perincikan di sini.

os.path.getsize() menentukan saiz

os.path.getsize (nama fail) mengembalikan nilai dalam bait Jika digunakan untuk melihat Untuk saiz fail , kita perlu menulis fungsi secara manual untuk menukarnya kepada bentuk yang mudah dibaca.

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Di sini kita hanya perlu memilih saiz fail kurang daripada 3M, 3M = 3 * 1024kB = 3 * 1024*1024bait

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Digabungkan dengan shutil.copy2, anda boleh menyalin fail saiz yang dipilih ke dalam folder sasaran kami

Cara untuk menentukan jenis fail

Ungkapan biasa diperlukan di sini Inilah formula untuk membantu kami.

Terdapat banyak kandungan tentang ungkapan biasa dan satu bab dikhaskan untuknya dalam "Python Core Programming", jadi kami tidak akan membincangkannya secara mendalam.

Seperti berikut, kami membenarkan akhiran fail yang ditentukan dan saiz fail yang ditentukan untuk disalin ke dalam fail sasaran kami:

Jangan lupa mengimport semula

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Gunakan ungkapan biasa yang lebih kompleks untuk menentukan jenis fail dengan lebih baik

Tapis fail berdasarkan masa pengubahsuaian

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Pada masa ini, saya mencipta fail bernama newfile dalam direktori

Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python

Ringkasnya, anda boleh menapis setiap fail mengikut masa pengubahsuaian dan hanya menyalinnya. Fungsi ini berguna dalam situasi tertentu untuk fail yang telah diubah suai atau ditambah baru-baru ini atau dalam tempoh tertentu.

Ringkasan

Sebenarnya, ini hanyalah program kecil, bukan kod jahat yang canggih. Saya ingin menggunakan contoh ini untuk menunjukkan keupayaan kuat Python untuk memproses fail dan membangkitkan semangat semua orang untuk belajar. Pelaksanaan di atas semuanya berdasarkan macos Linux juga boleh berjaya dengan sedikit pengubahsuaian. Teknik di atas adalah untuk pembelajaran sahaja dan tidak boleh digunakan untuk aktiviti lain.

Atas ialah kandungan terperinci Ia menakutkan untuk memikirkannya, pasangkan pemacu kilat USB dan mula melaksanakan kod Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam