GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, zda je adresář na stejném oddílu

V C byste použili stat() a porovnejte st_dev pole. V pythonu os.stat by měl udělat totéž.

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

Dalším způsobem je přístup „lépe požádat o odpuštění než svolení“ – zkuste jej přejmenovat, a pokud to selže, zachyťte příslušný OSError a vyzkoušejte přístup kopírování. tj.:

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

To má tu výhodu, že to bude fungovat i na Windows, kde je st_dev vždy 0 pro všechny oddíly.

Všimněte si, že pokud skutečně chcete zkopírovat a poté smazat zdrojový soubor (tj. provést přesun), spíše než jen kopírovat, pak Shutil.move již udělá to, co chcete:

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. Jak převést adresář na oddíl v Linuxu

  2. Jak vytvořit odkaz na adresář

  3. CentOS:Zkopírujte adresář do jiného adresáře

  1. Jak rozdělit disk v Linuxu

  2. Jak zkopírovat rozložení diskových oddílů celého disku pomocí standardních nástrojů?

  3. Jak zjistím velikost bloku oddílu ext3 v systému Linux?

  1. Jak zkopírovat adresář v příkazovém řádku Linuxu [Tip pro začátečníky]

  2. Jak zkopírovat adresáře do adresáře pomocí instalace v bash?

  3. Jak pomocí příkazu cp v linuxovém shellu zkopíruji celý adresář do jiného adresáře?