2017-06-23 4 views
0

ファイルを開くときに、そのディレクトリを指定する必要があります。パス名を書き込む代わりにカレントディレクトリを使用する方法がありますか?私は使用しています:プログラムの現在のフォルダの使い方は?

source = os.listdir("../mydirectory") 

しかし、プログラムは "mydirectory"というディレクトリに置かれている場合にのみ動作します。名前が何であっても、プログラムが存在するディレクトリで動作するようにしたい。

def copyfiles(servername): 

    source = os.listdir("../mydirectory") # directory where original configs are located 
    destination = '//' + servername + r'/c$/remotedir/' # destination server directory 
    for files in source: 
     if files.endswith("myfile.config"): 
      try: 
       os.makedirs(destination, exist_ok=True) 
       shutil.copy(files,destination) 
      except: 
+0

[現在のディレクトリとファイルのディレクトリを見つける](https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory) – victor

答えて

0

'.'は、現在のディレクトリを表します。

+0

の可能な複製可能性完全なことを言及する価値は、相対パス_somehow_は動作しません、常に 'os.getcwd()'があります。 –

0

試してみてください。

os.listdir('./') 

か:あなたはos.pathを好む場合

from pathlib import Path 
HERE = Path(__file__).parent 
source = list((HERE/"../mydirectory").iterdir()) 

os.listdir(os.getcwd()) 
+0

Python 3.xを使用している場合は、引数なしで単に 'os.listdir()'を使うことができます。また、 '/'は不要です:) – victor

3

これはpathlibバージョンです

import os.path 
HERE = os.path.dirname(__file__) 
source = os.listdir(os.path.join(HERE, "../mydirectory")) 

注:これは、多くの場合、現在の作業ディレクトリから異なるものになります

os.getcwd() # or '.' 

__file__は、現在のpythonファイルのファイル名です。 HEREは、あなたのpythonファイルが存在するディレクトリのパスになりました。

関連する問題