いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Pythonメモ-65 (send2trash) (ファイルをゴミ箱に捨ててくれるライブラリ, クロスプラットフォーム)

概要

超有名ライブラリなので、ご存知の方多いと思いますが、一応メモ。

github.com

個人的に pyperclip と同じくらい、しょっちゅう使っているライブラリ。

pyperclip については、以下でメモ書きました。

devlights.hatenablog.com

何してくれるライブラリ?

文字通り、指定ファイルをゴミ箱に送ってくれるライブラリです。

スクリプト書くときってファイル処理をするものが多いと思いますが

os.unlink とかでファイルを削除すると、完全に消えてしまいます。(当然ですが

で、一応何かあったとき用とかテスト実行時とかはバックアップをちょいとつくっておいて実行したりするのが多いと思います。

そんなときに、このライブラリ使うとゴミ箱に送ってくれるので、元に戻すのも楽だしファイルも実際に消えてないし精神的に楽です。ついでに、クロスプラットフォームなので、OS関係なく使えます。

インストール

インストールは、conda で一発です。anaconda 環境だと最初から入ってるっぽい?

今回は、わざと専用の仮想環境作ってみました。

⟩ conda create --name send2trash send2trash
Solving environment: done

## Package Plan ##

  environment location: /Users/devlights/anaconda3/envs/send2trash

  added / updated specs: 
    - send2trash


The following NEW packages will be INSTALLED:

    ca-certificates: 2017.08.26-ha1e5d58_0
    certifi:         2018.1.18-py36_0     
    libcxx:          4.0.1-h579ed51_0     
    libcxxabi:       4.0.1-hebd6815_0     
    libedit:         3.1-hb4e282d_0       
    libffi:          3.2.1-h475c297_4     
    ncurses:         6.0-hd04f020_2       
    openssl:         1.0.2n-hdbc3d79_0    
    pip:             9.0.1-py36h1555ced_4 
    python:          3.6.4-hc167b69_1     
    readline:        7.0-hc1231fa_4       
    send2trash:      1.4.2-py36_0         
    setuptools:      38.4.0-py36_0        
    sqlite:          3.22.0-h3efe00b_0    
    tk:              8.6.7-h35a86e2_3     
    wheel:           0.30.0-py36h5eb2c71_1
    xz:              5.2.3-h0278029_2     
    zlib:            1.2.11-hf3cbc9b_2    

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate send2trash
#
# To deactivate an active environment, use
#
#     $ conda deactivate

使い方

使い方は、send2trash.send2trash(ファイル) するだけです。

⟩ ipython                                                                                                                      (playground) 
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 12:04:33) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import send2trash

In [2]: import os

In [3]: os.chdir(f'{os.environ["HOME"]}/tmp/pytmp')

In [4]: with open('py01.py', 'w') as fp:
   ...:     fp.write('print("helloworld")\n')
   ...: 

って感じで、わざと適当なファイルを作っておきます。

その上で、

In [5]: send2trash.send2trash('py01.py')

ってすると

f:id:gsf_zero1:20180220005329p:plain

って感じでちゃんとゴミ箱にいってくれています。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。