2017-04-13 10 views
0

共有ネットワークドライブにディレクトリが存在するかどうかを確認しようとしています。ファイルが共有ネットワークドライブに存在するかどうか確認してください

import os 

if(os.path.exists('/Volumes')): 
print 'path exists' 
else: 
print 'path does not exist' 

これはうまく動作しますが、この引数に渡すとき、これは失敗します。「/ボリューム/ A21 \ 『sの\公開\フォルダ』

私が開くまで、これが存在しないので、これは私には理にかなっていますFinderの共有ドライブこれが失敗した

mount_smbfs smb://[email protected]/A21's Public Folder 

ので、私はos.path.exists引数に渡すために何がわからないんだ - だから私は、私が最初にコマンドラインから試してみたこれ、私が最初にマウントする必要がありますね。理想的には、まず/ Volumes/A21のパブリックフォルダにマウントして、そのフォルダーが存在するかどうかを確認したいのですが?

+0

:あなたの共有一度

は、ファイルが存在してかどうかをチェックすることができます実装されていますか?あなたはマウントしていないようです...マウントポイントが必要です。 –

+0

それは正しいです、私は以前にマウントされていませんでした。だから私はこの文をif文の前に追加しました - os.system( "osascript -e 'マウントボリューム\" smb://A21._smb._tcp.local/A21 \' s \ Public \ Folder \ "'")間違った引用符のために失敗しています。私は/ Volumesの下でフォルダにアクセスできるようになると思いますか? – A21

+0

あなたは '/ Volumes'の下に置くことができますが、適切な権限を持っていることを知っているので、ユーザのホームディレクトリが好きです。 '/ Volumes'から'〜/ mnt'にシンボリックリンクを作ることもできます。 –

答えて

0

問題は、文字列をコピーして貼り付けることである可能性があります。私は以前これに問題があった。例えば

os.path.join 

Python

import os 

pathtodrive = os.path.join("Volumes", "A21's Public Folder") 

if (os.path.exists(pathtodrive)): 
    print 'path exists' 
else: 
    print 'path does not exist' 
+0

私はこれを試しましたが、うまくいきませんでした。私は問題は、それがマウントされていないネットワークドライブを認識しないということです。 – A21

+0

例外を使ってどのようなエラーが生成されたかを確認しようとしましたか? – Davidhall

0

はあなたと基本的に同じルーチンをするだろうファイルパスを扱う場合には、OSはあなたが

使用してみてください以下の問題が発生した結合を使用するのが最善ですであろうBash取り付けシェア:

#!/usr/bin/python 

import os 

home = os.path.expanduser("~") 
mnt = home + "/mnt" 

if not os.path.exists(mnt): os.makedirs(mnt) 
os.chdir(mnt) 

os.system("mount_smbfs //[email protected]_smb._tcp.local/share " + mnt) 

これは、ユーザのホームディレクトリ内のマウントポイントをmntに設定します。フォルダが存在しない場合は作成されます。コマンドはそのディレクトリに変わり、smbをマウントします。パスワードを入力する必要があります。または、実際に安全でない方法を使用する場合は、コマンドにパスワードを含めることができます(例:username:password)。あなたはそれをマウントしている正確にどのような

os.path.exists(mnt + "/path/to/file") 
+0

このようなファイルやディレクトリは、/ Users/username/mntというマウントエラーが表示されます。私は通常、少なくともファインダー経由でゲストとして接続することができます。ユーザー名を指定する必要がありますか? – A21

+0

@ A21:はい「username」はユーザーの名前なので、そのインスタンスをアカウントに置き換えます。 –

+0

残念ながら、ゲスト以外のサーバーに接続することはできません。 – A21

関連する問題