Salin Latihan Python Khusus

Latihan Copy Special berjalan dengan sistem file dan materi perintah eksternal di bagian Utilitas Python. Latihan ini ada di direktori "copyspecial" dalam google-python-exercises (download google-python-exercises.zip jika Anda belum melakukannya, lihat bagian Menyiapkan untuk mengetahui detailnya). Tambahkan kode Anda di copyspecial.py.

Program copyspecial.py menggunakan satu direktori atau lebih sebagai argumennya. Kita akan mengatakan bahwa {i>file<i} "khusus" adalah file yang namanya berisi pola __w__ di suatu tempat, dengan w adalah satu atau lebih karakter kata. Main() yang disediakan menyertakan kode untuk mengurai argumen baris perintah, tetapi sisanya terserah Anda. Tulis fungsi untuk mengimplementasikan fitur di bawah ini dan ubah main() untuk memanggil fungsi Anda.

Fungsi yang disarankan untuk solusi Anda(detail di bawah):

  • get_special_paths(dir) -- mengembalikan daftar jalur absolut file khusus dalam direktori yang diberikan
  • copy_to(paths, dir) yang diberi daftar jalur, menyalin file tersebut ke direktori yang diberikan
  • zip_to(jalur, zippath) yang diberikan daftar jalur, zip file tersebut ke dalam zipfile yang diberikan

Bagian A (memanipulasi jalur file)

Kumpulkan daftar jalur absolut file khusus di semua direktori. Dalam kasus yang paling sederhana, cukup cetak daftar tersebut (di sini, "." setelah perintah adalah satu argumen yang menunjukkan direktori saat ini). Mencetak satu jalur absolut per baris.

$ ./copyspecial.py .
/Users/nparlante/pycourse/day2/xyz__hello__.txt
/Users/nparlante/pycourse/day2/zz__something__.jpg

Kami akan mengasumsikan bahwa nama tidak diulang di seluruh direktori (opsional: periksa asumsi tersebut dan lakukan error jika dilanggar).

Bagian B (penyalinan file)

Jika opsi "--todir dir" ada di awal command line, jangan cetak apa pun. Sebagai gantinya, salin file ke direktori yang diberikan, dengan membuatnya jika perlu. Gunakan modul python "shutil" untuk menyalin file.

$ ./copyspecial.py --todir /tmp/fooby .
$ ls /tmp/fooby
xyz__hello__.txt        zz__something__.jpg

Bagian C (memanggil program eksternal)

Jika opsi "--tozip zipfile" ada di awal command line, jalankan perintah ini: "zip -j zipfile <list all the files>". Tindakan ini akan membuat zipfile yang berisi file. Untuk bersenang-senang/menjamin, cetak juga command line yang akan Anda lakukan terlebih dahulu (seperti yang ditunjukkan dalam presentasi). (Catatan Windows: windows tidak dilengkapi dengan program untuk menghasilkan arsip .zip standar secara default, tetapi Anda dapat mendownload program zip yang gratis dan terbuka dari www.info-zip.org.) Untuk pengguna Linux, jika belum menginstal zip, Anda dapat menginstalnya dengan memanggil sudo apt install zip .

$ ./copyspecial.py --tozip tmp.zip .

Command I'm going to do:zip -j tmp.zip /Users/nparlante/pycourse/day2/xyz__hello__.txt /Users/nparlante/pycourse/day2/zz__something__.jpg

Jika proses turunan keluar dengan kode error, keluarlah dengan kode error dan cetak output perintah. Uji ini dengan mencoba menulis file {i>zip<i} ke direktori yang tidak ada.

$ ./copyspecial.py --tozip /no/way.zip .

Command I'm going to do:zip -j /no/way.zip /Users/nparlante/pycourse/day2/xyz__hello__.txt /Users/nparlante/pycourse/day2/zz__something__.jpg

zip I/O error: No such file or directory zip error: Could not create output file (/no/way.zip)