回答編集履歴
3
ちょっと追記
answer
CHANGED
@@ -20,8 +20,10 @@
|
|
20
20
|
|
21
21
|
> pathlib.WindowsPath('servername') には、引っ掛からないです。
|
22
22
|
|
23
|
-
Microsoftネットワークに対応したパス指定を`UNCパス`といいます
|
23
|
+
Microsoftネットワークに対応したパス指定を`UNCパス`といいます(Microsoftの固有名詞です)。pathlibをお勧めしたのはUNCパスをちゃんと扱えるからです。
|
24
24
|
|
25
|
+
外部サーバなどを指定するUNCパスの記法として、'\\servername\'のように先頭に'\\'が必要です(Windowsでは¥マークになるでしょう)。そうでなければ、現在のワーキングディレクトリ以下でservernameを探してしまいます。
|
26
|
+
|
25
27
|
ところでPythonを含む多くの言語では`\`から始まる文字はエスケープ文字といわれ、例えば`\n`は改行文字になるのはご存知だと思います。`\\`(バックスラッシュ二つ)は一つの`\`の文字と解釈されますから、'\\servername'という文字列を作るには'\\\\servername'のようにバックスラッシュ(あるいは¥)が4つ必要です。Pythonではr'\'のような記法でエスケープ文字を抑止できますから、これの使い時でしょう。
|
26
28
|
|
27
29
|
私の環境では以下のコードでローカルPCのUsers以下のものが列挙されます。
|
2
追記
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
```python
|
4
4
|
import pathlib
|
5
5
|
|
6
|
-
share = pathlib.WindowsPath(r'
|
6
|
+
share = pathlib.WindowsPath(r'\\servername\')
|
7
7
|
|
8
8
|
if share.exists():
|
9
9
|
print("指定のファイルもしくはディレクトリが存在しています。")
|
@@ -13,4 +13,23 @@
|
|
13
13
|
```
|
14
14
|
|
15
15
|
|
16
|
-
[http://docs.python.jp/3/library/pathlib.html](http://docs.python.jp/3/library/pathlib.html)
|
16
|
+
[http://docs.python.jp/3/library/pathlib.html](http://docs.python.jp/3/library/pathlib.html)
|
17
|
+
|
18
|
+
----
|
19
|
+
追記&パスに誤りがあったので修正しました
|
20
|
+
|
21
|
+
> pathlib.WindowsPath('servername') には、引っ掛からないです。
|
22
|
+
|
23
|
+
Microsoftネットワークに対応したパス指定を`UNCパス`といいます。これはMicrosoftの固有名詞です。外部サーバなどを指定するUNCパスの記法として、'\\servername\'のように先頭に'\\'が必要です(Windowsでは¥マークになるでしょう)。そうでなければ、現在のワーキングディレクトリ以下でservernameを探してしまいます。
|
24
|
+
|
25
|
+
ところでPythonを含む多くの言語では`\`から始まる文字はエスケープ文字といわれ、例えば`\n`は改行文字になるのはご存知だと思います。`\\`(バックスラッシュ二つ)は一つの`\`の文字と解釈されますから、'\\servername'という文字列を作るには'\\\\servername'のようにバックスラッシュ(あるいは¥)が4つ必要です。Pythonではr'\'のような記法でエスケープ文字を抑止できますから、これの使い時でしょう。
|
26
|
+
|
27
|
+
私の環境では以下のコードでローカルPCのUsers以下のものが列挙されます。
|
28
|
+
|
29
|
+
```
|
30
|
+
print(list(pathlib.WindowsPath(r'\\localhost\Users').glob('*')))
|
31
|
+
```
|
32
|
+
Windowsネットワークは使っていないので、外部サーバの指定は試していません。PythonがUNCパスを解釈して正しくアクセスできてると確認できれば、問題の半分は解決したと考えてよいでしょう。
|
33
|
+
|
34
|
+
|
35
|
+
リンクについては、単にリンクを使わなければよいと思います。
|
1
パスを非エスケープリテラルに変更
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
```python
|
4
4
|
import pathlib
|
5
5
|
|
6
|
-
share = pathlib.WindowsPath('//servername/')
|
6
|
+
share = pathlib.WindowsPath(r'//servername/')
|
7
7
|
|
8
8
|
if share.exists():
|
9
9
|
print("指定のファイルもしくはディレクトリが存在しています。")
|