2017-05-31 13 views
0

現在、私のコンピュータからネットワーク上の他のコンピュータにファイルをコピーするプログラムがあります。他のコンピュータにすでにディレクトリが指定されている場合、これはうまく機能します。Pythons shutilを使ってディレクトリがまだ存在しない場合は作成しますか?

一部のコンピュータには、指定されたディレクトリがまだ存在しない場合があります。この場合、ディレクトリが存在しない場合はどのように作成してから、新しいディレクトリにファイルをコピーできますか? shutil.copytree()は動作しますか?ここで

存在/ testディレクトリdoesntの場合は私の現在のプログラムの一部

import fileinput 
import shutil 

def copyerror(): 
    print (" //////////////////////////////////////////") 
    print (" ") 
    print (" Cannot connect to " + servername + ".") 
    print (" ") 
    print (" //////////////////////////////////////////") 

def copyfiles(servername): 
    source = os.listdir("C:/Users/jm/Desktop/PythonUpdate/") 
    destination = '//' + servername + '/c$/test/' 
    for files in source: 
     if files.endswith(".config"): 
      try: 
       shutil.copy(files,destination) 
      except: 
       copyerror() 


array = [] 
with open("C:/Users/jm/Desktop/PythonUpdate/serverlist.txt", "r") as f: 
    for servername in f: 

     copyfiles(servername.strip()) 

だから、私は先に行くと1を作成したいです。

更新 また、新しいコンピュータにファイルのコピーを停止する方法はありますか?ディレクトリがまだ存在していない場合です。

+0

'import os; os.makedirs(path、exist_ok = True) 'https://docs.python.org/3.6/library/os.html#os.makedirs –

+0

shutil.copyの後にファイルを置くことはできますか? – Prox

+0

oops私は間違った場所に投稿しました – Prox

答えて

0

いいえ、ディレクトリが存在しない場合、どのようにファイルをディレクトリにコピーできますか?ディレクトリを作成するか、既に存在するかどうかを確認してからファイルをコピーしてください。

+0

OK、それは意味があります – Prox

+0

あなたはdestination = '+' + servername + '/ c $/test /'行または 'try:'の後に置く方が良いと思いますか? if文の中で?私は両方で動作することがわかりますが、私はすでに 'try:'のエラーをチェックしていますので、それは良いでしょうか?私は2番目のtry-catchブロックを作ることができましたが、私は元のtry-catchブロックにすべてを保持することでコードをよりシンプルに保つことができると考えています。私は 'try'ブロックについて詳しく説明し、おそらく異なるエラーをチェックするべきだと知っています。 – Prox

関連する問題