Python から 'sed' を呼び出そうとしていますが、subprocess.check_call() または os.system() を介してコマンド ラインを渡す際に問題が発生しています。
私はWindows 7を使用していますが、Cygwinの「sed」を使用しています(パスにあります)。
Cygwin シェルからこれを行うと、正常に動作します。
$ sed 's/&nbsp;/\ /g' <"C:foobar" >"C:foobar.temp"
Python では、"name" で作業しているフル パス名を取得しています。私は試した:
command = r"sed 's/&nbsp;/\ /g' " + "<" '\"' + name + '\" >' '\"' + name + '.temp' + '\"'
subprocess.check_call(command, shell=True)
すべての連結は、入力ファイル名と出力ファイル名を二重引用符で囲んでいることを確認するためにあります (Windows ファイル パスに空白がある場合)。
また、最後の行を次のように置き換えてみました。
os.system(command)
いずれにせよ、次のエラーが表示されます。
sed: -e expression #1, char 2: unterminated `s' command
'amp' is not recognized as an internal or external command,
operable program or batch file.
'nbsp' is not recognized as an internal or external command,
operable program or batch file.
それでも、私が言ったように、コンソールからは問題なく動作します。私は何を間違っていますか?