2017-05-08 8 views
0

私はこの質問の簡潔さについてお詫び申し上げます。私はPythonでプログラミングすることを学んでいます。私の最近の仕事はファイルを扱うことを学ぶことです。残念ながら、特定のファイルを開くためにパスステートメントを正しくフレームすることができないようです。物事をさらに面白くするために、私はbi-OS-usalです。私はMacOSとWindowsの両方で働いています。Windows上のファイルへのルートパスとは何ですか? MacOSで?

どちらのOSでも動作するはずのOS固有のパスを生成するために、Pythonの "os"モジュールを使用しようとしましたが、引き続きFileNotFoundErrorを取得しています。ここで私はMacで試したことがあります。ファイルへのパスは、メインドライブ(Macintosh HD)の「My」ディレクトリの下の「Users」フォルダのtoddbにあることに注意してください。

FileNotFoundError: [Errno 2] No such file or directory: 

私は明示的に私も試したルートドライブ述べるなかったので:ファイル名は、私が得る。この時点で

import os 
path = os.path.join("Users", "toddb", "st.txt") 
stlaunch = open(path, "r") 

st.txtある

path = os.path.join("Macintosh HD", "Users", "toddb", "st.txt") 

同じエラーをするときI私のコードを実行します。

答えて

0

ルートディレクトリの名前は/です。それを最初に入れよう:

path = os.path.join("/", "Users", "toddb", "st.txt") 
2

OSXには/と呼ばれる単一のルートがあります。 Windowsには、たとえばC:\\と呼ばれる複数のルート(ドライブ)があります。 Pythonでは、C:/のように、スラッシュでウィンドウのパスを参照できます。

どちらの場合でも、ユーザーディレクトリにはデフォルトの場所がありますが、それらを移動することができます。これらのオペレーティングシステムは通常、ホームディレクトリを環境変数に入れます。これらの環境変数を組み合わせて家を見つけることができます。

また、Pythonには、あなたのために重い作業を行うos.path.expanduser機能があります。 expanduser('~')は現在のユーザのホームディレクトリを展開し、 `expanduser( '〜otheruser')は他のユーザを取得します。すべてをまとめて実行することができます

path = os.path.join(os.path.expanduser('~'), "st.txt") 
+0

内部的には、Windowsには単一の '' \ ''ルートがありますが、ファイルシステムではなくオブジェクトの名前空間です。これは、ユーザーではなくシステムとドライバによって使用されるようにレイアウトされています。いくつかの固定ディレクトリとオブジェクト名と、自動的に番号が付けられGUID名がたくさんあります。一般的なデバイス名はシンボリックリンクです。 [C:]ドライブは '\ Global ?? \ C:' => '\ Device \ HarddiskVolume [N]'であり、[N]は任意の数ですが、通常は1または2で、HKLMレジストリハイブは、 \ Registry \ Machine'と入力します。 – eryksun

+0

ありがとう!非常に役立ちます。残念ながら、私はまだファイルが見つかりませんエラーを取得しています。 'コード' >>>パス= os.path.join(os.path.expanduser( "〜")、 "Python.txt") >>>パス 'C:\\ Users \ \\ OneDrive \\ Documents \\ Python \\ Python.txt ' >>> stlaunch = open(パス、 "r") トレースバック(最新のコール最後): ファイル ""、1行目 stlaunch = open(パス、 "r") FileNotFoundError:[Errno 2]このようなファイルまたはディレクトリはありません: 'C:\\ Users \\ Todd \\ Python.txt' – Boringo

関連する問題