回答編集履歴
1
追記
answer
CHANGED
@@ -1,3 +1,24 @@
|
|
1
1
|
`~inkscape.exe" + name + ".svg" + "-M" + name + ".emf" ~`だと`name`が`hoge`だった場合
|
2
2
|
`~inkscape.exehoge.svg-Mhoge.emf~`のように文字列がひっついてしまいます。
|
3
|
-
`~inkscape.exe " + name + ".svg " + " -M " + name + ".emf" ~`のようにスペース文字を入れてみてください。
|
3
|
+
`~inkscape.exe " + name + ".svg " + " -M " + name + ".emf" ~`のようにスペース文字を入れてみてください。
|
4
|
+
|
5
|
+
#### さらに
|
6
|
+
- `inkscape`や画像のファイルパスにスペースが含まれていても大丈夫なように、パス名はダブルクオーテーションで囲みます。
|
7
|
+
- `Python`の実行ディレクトリと画像のあるディレクトリが異なっていてもよいように、画像はフルパスで渡します。
|
8
|
+
- コマンド文字列全体を`cmd`変数として作成し、printで表示することで設定ミスなどがないか確認しやすくなります。
|
9
|
+
|
10
|
+
上記をふまえると以下のようなコードでよいかと思います。各パス名はご自身の環境に合わせてください。
|
11
|
+
```Python
|
12
|
+
import subprocess
|
13
|
+
import os
|
14
|
+
|
15
|
+
ink_path = 'C:/Program Files/Inkscape/inkscape.exe'
|
16
|
+
path = 'C:/users/user/desktop/img dir' # スペースを含むディレクトリ名
|
17
|
+
|
18
|
+
lis = os.listdir(path)
|
19
|
+
for i in lis:
|
20
|
+
name = os.path.splitext(os.path.basename(i))[0] # 拡張子を取り除く
|
21
|
+
cmd = '"{}" "{}/{}.svg" -M "{}/{}.emf"'.format(ink_path, path, name, path, name)
|
22
|
+
print(cmd)
|
23
|
+
subprocess.call(cmd,shell=True)
|
24
|
+
```
|