2017-06-26 332 views
0

私は何をしているのか簡単な概要を以下に示します。ネットワークディレクトリのpythonを使ってpdfマージルーチンを自動化しようとしています。ネットワークの場所。私の言葉があまり正確でない場合にはお詫び申し上げます。pythonプログラムを使ってネットワークフォルダにアクセスする

私はPython 3.6を使用してWindows 7でコーディングしています。プログラムは他のマシンに配布する必要がありますので、ローカルと一時的な修正はおそらく役に立ちません。私が書いたコードは完全に機能し、すべてのローカルフォルダとファイルで正常に動作しますが、ネットワーク上で使用する必要があるため、必要なフォルダにアクセスする際にいくつかの問題があります。ただCMDに入力されたとき

os.system("pushd " + "\\" + "\\netWorkDrive\Reports") 
check_output("pushd " + "\\" + "\\netWorkDrive\Reports", shell=True) 

pushdpopd作業罰金が、私はシステムを行うとき、彼らは単に通過していないのpythonを通じて呼び出します。ここでは

は、私がしようとしているものです。私はシステムコールを送信し、それは正しく動作しますが、現在のディレクトリを "cd"すると、私は以前のディレクトリにいます。 cmdを手動で実行すると、すべてが正常に動作します。私は、問題を探検したが、何か作業/有用なものを見つけることに終わらなかった。私は本当に何か提案を感謝し、私はさらに私の問題を明確にする必要がある場合は私に知らせてください。

ありがとうございました!

私は本当に働いて変更する必要があれば、私はちょうど私が

を行う必要があるものは何でも、ファイル操作のパスでネットワークパスを含む完全なパスを含むであろう、このような方法でのpushd/POPDを使用することはありません

+0

は多くのものがあります。ドライブのグローバルアドレスはありますか?ローカルにマップされた「手紙」ではなく? (大企業のイントラネットネットワークにはグローバルアドレスがあり、従業員はしばしば自分自身の "N:"(またはそれに関わらず)ドライブにマップします)全体のアドレスを使用してください。 'r'C:/ Users/Vlox/Stuff'''は生の文字列を示しますので、スラッシュは正しく読み込まれます(定期的に問題を引き起こす可能性のあるpythonエスケープ文字です)。あるいは、doubleあなたのバックスラッシュ ''C:// Users // Vlox // Stuff'' – Vlox

+0

グローバルアドレスを使用していると思うのは、誰もが" \\ ourFolderName \ reports "というネットワークにアクセスするためです。 、 'popd'は私のために一時的なドライブを作成しますが、私はまだその段階にはいません。私はパス名を文字列でテストしたので、スラッシュに入った方法はすでにエスケープ文字を考慮しています。まだrを試してみましたが、残念ながらそれは助けになりませんでした。 –

+0

PUSHDはうまく動作しています。しかし、作成されたシェルが終了すると、os.system()を呼び出す前のcwdを持つ既存のプロセスに戻ります。 – lit

答えて

0

ディレクトリ、私はPythonでこれを行うだろう:

import os 

original_working_directory = os.getcwd() 

# do stuff 

new_networked_directory = r'\\server\share\folder' 
# change to the networked directory 
os.chdir(new_networked_directory) 

# do stuff 

#changeback to original working directory 
os.chdir(original_working_directory) 

# do more stuff 

本当に "tempドライブ"などの必要はありません。

+0

これは私がもともと始まったところであり、私はcmdを使って直接サーバにアクセスすることができないという事実によって捨てられましたが、実際には必要ありません!ありがとうございました! –

関連する問題