回答編集履歴
3
ちょっと追記
test
CHANGED
@@ -42,7 +42,11 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
+
Microsoftネットワークに対応したパス指定を`UNCパス`といいます(Microsoftの固有名詞です)。pathlibをお勧めしたのはUNCパスをちゃんと扱えるからです。
|
46
|
+
|
47
|
+
|
48
|
+
|
45
|
-
|
49
|
+
外部サーバなどを指定するUNCパスの記法として、'\\servername\'のように先頭に'\\'が必要です(Windowsでは¥マークになるでしょう)。そうでなければ、現在のワーキングディレクトリ以下でservernameを探してしまいます。
|
46
50
|
|
47
51
|
|
48
52
|
|
2
追記
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
share = pathlib.WindowsPath(r'
|
11
|
+
share = pathlib.WindowsPath(r'\\servername\')
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -29,3 +29,41 @@
|
|
29
29
|
|
30
30
|
|
31
31
|
[http://docs.python.jp/3/library/pathlib.html](http://docs.python.jp/3/library/pathlib.html)
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
----
|
36
|
+
|
37
|
+
追記&パスに誤りがあったので修正しました
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
> pathlib.WindowsPath('servername') には、引っ掛からないです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
Microsoftネットワークに対応したパス指定を`UNCパス`といいます。これはMicrosoftの固有名詞です。外部サーバなどを指定するUNCパスの記法として、'\\servername\'のように先頭に'\\'が必要です(Windowsでは¥マークになるでしょう)。そうでなければ、現在のワーキングディレクトリ以下でservernameを探してしまいます。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
ところでPythonを含む多くの言語では`\`から始まる文字はエスケープ文字といわれ、例えば`\n`は改行文字になるのはご存知だと思います。`\\`(バックスラッシュ二つ)は一つの`\`の文字と解釈されますから、'\\servername'という文字列を作るには'\\\\servername'のようにバックスラッシュ(あるいは¥)が4つ必要です。Pythonではr'\'のような記法でエスケープ文字を抑止できますから、これの使い時でしょう。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
私の環境では以下のコードでローカルPCのUsers以下のものが列挙されます。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
```
|
58
|
+
|
59
|
+
print(list(pathlib.WindowsPath(r'\\localhost\Users').glob('*')))
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
Windowsネットワークは使っていないので、外部サーバの指定は試していません。PythonがUNCパスを解釈して正しくアクセスできてると確認できれば、問題の半分は解決したと考えてよいでしょう。
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
リンクについては、単にリンクを使わなければよいと思います。
|
1
パスを非エスケープリテラルに変更
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
share = pathlib.WindowsPath('//servername/')
|
11
|
+
share = pathlib.WindowsPath(r'//servername/')
|
12
12
|
|
13
13
|
|
14
14
|
|