GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリが同じパーティションにあるかどうかを判断する方法

C では、stat() を使用します。 st_dev を比較します 分野。 Python では、os.stat 同じことをすべきです。

import os
def same_partition(f1, f2):
    return os.stat(f1).st_dev == os.stat(f2).st_dev

もう 1 つの方法は、「許可よりも許しを求める方がよい」アプローチです。名前を変更してみて、それが失敗した場合は、適切な OSError をキャッチします。 そしてコピーアプローチを試してください。例:

import errno
try:
    os.rename(source, dest):
except IOError, ex:
    if ex.errno == errno.EXDEV:
        # perform the copy instead.

これには、すべてのパーティションで st_dev が常に 0 である Windows でも機能するという利点があります。

単にコピーするのではなく、実際にソース ファイルをコピーしてから削除する (つまり、移動を実行する) 場合は、shutil.move が既に目的を果たしていることに注意してください。

Help on function move in module shutil:

move(src, dst)
    Recursively move a file or directory to another location.

    If the destination is on our current filesystem, then simply use
    rename.  Otherwise, copy src to the dst and then remove src.

Linux
  1. Linux でディレクトリをパーティションに変換する方法

  2. ディレクトリへのリンクを作成する方法

  3. CentOS:ディレクトリを別のディレクトリにコピーする

  1. bashでインストールを使用してディレクトリをディレクトリにコピーする方法は?

  2. Linuxシェルでcpコマンドを使用して、ディレクトリ全体を別のディレクトリにコピーするにはどうすればよいですか?

  3. Linuxでファイルシステムの種類を確実に判断する方法は?

  1. Linuxでディスクをパーティション分割する方法

  2. Linux で ext3 パーティションのブロック サイズを確認するにはどうすればよいですか?

  3. Linuxでディレクトリパスを保持するファイルをコピーするには?