我正在使用rsync將文件從一臺服務器傳輸到另一臺服務器。現在我必須檢查目錄的大小並比較大小。如果目錄的大小相同,那麼rsync是成功的。我試過這樣做,但在路徑中找到了一些錯誤「杜:無法訪問」。任何人都可以請告訴我如何做到這一點。提前感謝。如何解決du:python中無法訪問錯誤?
下面是我的代碼:
path = '/mnt/rsyncap/Monte Carlo'
size_cmd = 'ssh -l root -A '+ rh +' -i /Users/macbookpro/Development/serverkey/id_rsa du -sh %s' % path
Size = subprocess.Popen(size_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,shell= True).communicate()[0]
在上面的代碼,你可以看到path.In存在的,只是因爲它顯示在杜-SH線誤差之間「蒙地卡羅」的空間。如何處理目錄名稱之間的空間並獲取大小。如果目錄名稱中沒有空格,則它可以正常工作。
輸出:
du: cannot access `/mnt/rsyncap/Monte': No such file or directory
du: cannot access `Carlo': No such file or directory
所以,請幫助我,如果有人對此有什麼想法。
你好,我試過這樣做,但仍然有一個錯誤。 'du -sh%s'%shlex.quote(path), AttributeError:'module'object has no attribute'quote' –
@AnujPhophalia:你正在使用哪個版本的Python?如果它早於3.3,則使用'import pipes'並使用'pipes.quote'來代替。 – Ryan
嗨,我使用python 2.7.6版本。即使我嘗試使用pipes.quote,但輸出是用法:ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:] port] [-e escape_char] [-F configfile] [ - 我的pkcs11] [-i identity_file] [-L [bind_address:] port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [ -R [bind_address:] port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun [:remote_tun]] [user @] hostname [command] –