基本的に、プログラムと同じフォルダ内にあるフォルダ内のテキストファイルを開く簡単な方法を探しています。私のディレクトリ構造は次のようになります。
/programfolder/textfiles/textfile
そして、私は次のようにopenを使用しようとしています:
text=functionthatgetsfilename()
file=open("textfiles/"+text,"r")
私は何が間違っているのですか?どこかにタイプミスがありますか?
基本的に、プログラムと同じフォルダ内にあるフォルダ内のテキストファイルを開く簡単な方法を探しています。私のディレクトリ構造は次のようになります。
/programfolder/textfiles/textfile
そして、私は次のようにopenを使用しようとしています:
text=functionthatgetsfilename()
file=open("textfiles/"+text,"r")
私は何が間違っているのですか?どこかにタイプミスがありますか?
現在のディレクトリとスクリプトが存在するディレクトリの違いを知る必要があります。現在のディレクトリは、コマンドライン(CMD、SHなど)でアプリケーションを起動したディレクトリです。でそれを示すことができますos.path.normpath(os.curdir)
。
あなたの問題を解決するために、あなたは使うことができます
file=open(os.path.join(os.path.dirname(__file__),'holdstextfiles',text),'r')
また
os.chdir(os.path.dirname(__file__))
...
最初の解決策は、目的のファイルへの絶対パスを使用します。これは、何があっても同じです。絶対パスです。
2番目の解決策は、使用している相対パスを使用する前に、現在のディレクトリを変更します。