2017-01-24 18 views
0

私は現在、セレンを使用してpdf(novaPDFを使用)をダウンロードし、そのpdfを新しい名前で書き換えるWindowsコンピュータでPythonでプログラムを作成しています。Shuttil Python制限付き共有ドライブにファイルをコピーする

ただし、このpdfのダウンロードと最終保存の場所は、共有ネットワークドライブにあります。私は関連するフォルダにアクセスでき、このプログラムを利用するユーザーはすべて正しいフォルダにアクセスできます。

ファイルを完全に(共有ドライブに)ダウンロードできますが、shutil.copy(curr, new)を実行してダウンロードしたファイルの名前を適切な名前に変更しようとすると、私はIOError: [Errno 13] Permission deniedになります。私はファイルを移動したり名前を変更したりできることに気付きましたが、同様の問題が発生していましたので、現在は元のファイルをコピーしています。

私は共有ドライブのアクセス権を持つ問題だと思っていますが、それは他のものであっても大丈夫です。私は自分でこの作業を続けようとしていますが、解決策が得られれば投稿しますが、フォローアップの質問は自由にしてください。ヘルプは常に高く評価されています!

ありがとうございます!

+1

は '別のディレクトリにあるnew'か?次に、そこの権利を確認します。あなたが誤って 'curr'と' new'と同じ名前を付けたことはありますか? – tdelaney

+0

currとnewは同じではない、時々動作するため。 currよりも深いディレクトリが1つあります。また、現在、私はそれがエラーを取得する場合は、秒間待ってから再度試して実行している。それはうまくいくようです –

+1

ターゲットのような音があり、何かが開いています。 'os.path.exists'を試してデバッグすることができます。 – tdelaney

答えて

0

これは正確には広範囲の質問に答えるわけではありませんが、私は同様のプロジェクトを完了するのに役立つかもしれない一般的な情報を提供します。

os.path.isfileが真を返すまで、トリックは待っているようでした。その後、少し待ってください。私がやったことは、メソッドを受け取り、指定された回数の再試行で呼び出すヘルパー関数を作成したことです。これはうまくいくように見えましたが、セレンの場合はページが読み込みに少し時間がかかるため、一般的には非常に便利です。ここで

はヘルパー関数です:

def helper_function(self, method, *args): 
    ''' 
    This method is a wrapper to allow calls to retry if the original 
    call fails 
    :return: the element if any 
    ''' 

    exception = None 

    for i in xrange(config.number_of_retries): 
     try: 
      element = method(*args) 
      return element 
     except Exception as e: 
      exception = e 
    raise Exception("Number of retries exceeded: " + repr(exception)) 
関連する問題