回答編集履歴

1

追記

2020/01/29 05:04

投稿

can110
can110

スコア38266

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