використання стислих (.gz) файлів із скриптами командного рядка, що очікують нестиснених файлів


0

Для того щоб заощадити місце на диску, я пізніше багато файлів, які я регулярно використовую. Який найкращий спосіб все-таки використовувати .gz версію цих текстових файлів із, скажімо, сценаріями python?

Більш конкретно, чи є спосіб передавати стислий файл у сценарій, який очікує нестисненого файлу?

Наприклад, якби зазвичай я бігав

python test.py file.txt

Як би я запустив ту саму команду з a file.txt.gz?

Я знаю, що я могла зробити щось подібне

gzip -dk file.txt.gz; python test.py file.txt; rm file.txt

Але це здається трохи завітрюваним; є кращий / швидший спосіб?


Використовуйте процедуру заміни:python test.py <(zcat file.txt.gz)
glenn jackman

як я можу використовувати підстановку процесу у випадку, коли задіяно кілька файлів gz?
Константіно

1
Я не думаю, що це концептуально поганий питання. Але на практичному рівні, наскільки великі ці сценарії Python, що стискаючи їх, насправді економить дисковий простір? Завдяки дешевому та ще більш швидкому підключенню для доставки, наприклад, через USB 3.0, яка фактична користь від такої схеми? Я бачу вигоду, якби був автоматизований процес, в який можна було вписати цю команду. Але на щоденному людському рівні? Яка реальна користь такої схеми?
JakeGould

Відповіді:


0

Ви хочете будь-якого

for file in *.txt.gz; do python test.py <(zcat "$file"); done

або

python test.py <(zcat *.txt.gz)

залежно від того, скільки даних ви хочете передати програмі test.py


на основі Вашого коментаря:

proc_subs=$( printf ' <(zcat "%s")' *.txt.gz )
echo "python test.py $proc_subs -v"
#eval "python test.py $proc_subs -v"

відмініть коментар лінії eval, якщо вам подобається, як вона виглядає


як би ви змінили свою другу пропозицію щодо обробки кількох файлів (за виклик python), а також виклику python, що вимагає булевих опцій прапора. наприклад, python test.py file1.txt file2.txt -v
Константино,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.