Saya memanggil perintah zip dari skrip di mana saya tidak dapat mengubah direktori. Saya perlu membuat file zip dari barang-barang data/kit123/
dari direktori tempat data berada, tapi saya ingin isi zip hanya menjadi isi kit123
, dengan path relatif ke kit123
.
Ini adalah struktur direktori
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Skrip saya berjalan di myworkingdir dan tidak dapat mengubah direktori.
Jika saya menelpon
zip -r kit123.zip data/kit123
maka struktur dalam file zip akan menjadi
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
tapi aku menginginkannya
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Apakah ada opsi zip yang bisa saya gunakan untuk mencapai ini? Tampaknya aneh bahwa itu harus bergantung pada direktori kerja saya
Saya tahu itu bukan -j. yang satu menghancurkan struktur di dalam kit123
command-line
zip
Nathan
sumber
sumber
zipfile.write(arcname=
mengizinkannya btw: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.writeJawaban:
Seperti yang Anda catat di komentar yang sekarang Anda tahu cara mengganti direktori dengan skrip Anda, saya akan menjelaskan situasi dengan zip terkait jalur relatif.
Hal ini mungkin paling mudah untuk membuka terminal dan
cd
untukkit123
; Anda harus membuat direktori target direktori kerja Anda - Anda tidak dapat menjalankan perintah dari dasar direktori home Anda atau itu akan mengambil semua jalur/home/$USER/..
Jika Anda menggunakan-j
opsi, itu akan menghapus semua jalur, karena tidak ada benar-benar setara dengan opsi tar--strip
dengan berbagai tingkat penghapusan jalur dapat ditentukan.Jadi tolong cd ke direktori target Anda (
kit123
) dan masukkan:Ini akan secara rekursif (
-r
) menyimpan semua (*
) file dan direktori file dalam direktori saat ini (kit123
), dan ketika path relatif (-p
) disimpan secara otomatis kecuali jika ada-j
opsi, struktur direktori akan seperti yang Anda inginkan.Kit123
dan subfolder (kitpart1
) dengan file mereka sendiri akan ada:Anda dapat memeriksa isi file zip dengan
unzip -l zipfile.zip
.Untuk informasi lebih lanjut tentang opsi lain yang tersedia untuk
zip
, lihatman zip
dan manual Ubuntu online .sumber