回答編集履歴
3
追記
test
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
# ... の部分は現状の設定から持ってきてください
|
10
10
|
#scp = SCPClient(..., sanitize=False) # 使えません
|
11
11
|
scp = SCPClient(..., sanitize=lambda x: x)
|
12
|
+
# ファイル名をダブルクォートで囲ったものを渡す
|
12
13
|
scp.put('test_file.pdf', '"C:/test blank/test_file.pdf"')
|
13
14
|
```
|
14
15
|
|
2
修正
test
CHANGED
@@ -3,12 +3,15 @@
|
|
3
3
|
scpモジュールのデフォルトのエスケープの処理が、unix系(というか、sh)を前提としたものになっていて、細かいところは除いてざっくり言ってしまうと `C:/test blank/test_file.pdf` → `'C:/test blank/test_file.pdf'` のようにシングルクォートで囲む処理になっています。
|
4
4
|
Windowsサーバーの場合、おそらくシェルが cmd.exe なのでダブルクォートでやってやらないといけないと思われます。
|
5
5
|
|
6
|
-
ちゃんとやるなら、Windowsサーバーに合わせたエスケープ処理の関数を作るのがいいんでしょうが、まじめにやるのはちょっと大変そうなので、デフォルトのエスケープ処理をoffにして(
|
6
|
+
ちゃんとやるなら、Windowsサーバーに合わせたエスケープ処理の関数を作るのがいいんでしょうが、まじめにやるのはちょっと大変そうなので、デフォルトのエスケープ処理をoffにして ~~(sanitize=False)~~、引数で渡すファイル名を手作業でエスケープしておいてやるのではどうでしょう。
|
7
7
|
|
8
8
|
```python
|
9
9
|
# ... の部分は現状の設定から持ってきてください
|
10
|
-
scp = SCPClient(..., sanitize=False)
|
10
|
+
#scp = SCPClient(..., sanitize=False) # 使えません
|
11
|
+
scp = SCPClient(..., sanitize=lambda x: x)
|
11
12
|
scp.put('test_file.pdf', '"C:/test blank/test_file.pdf"')
|
12
13
|
```
|
13
14
|
|
15
|
+
### 追記
|
16
|
+
`sanitize=False` が使えるようになったものは、まだリリースされていないみたいです。確認不足ですいません。
|
14
17
|
|
1
追記
test
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
ちゃんとやるなら、Windowsサーバーに合わせたエスケープ処理の関数を作るのがいいんでしょうが、まじめにやるのはちょっと大変そうなので、デフォルトのエスケープ処理をoffにして(`sanitize=False`)、引数で渡すファイル名を手作業でエスケープしておいてやるのではどうでしょう。
|
7
7
|
|
8
8
|
```python
|
9
|
+
# ... の部分は現状の設定から持ってきてください
|
9
10
|
scp = SCPClient(..., sanitize=False)
|
10
11
|
scp.put('test_file.pdf', '"C:/test blank/test_file.pdf"')
|
11
12
|
```
|