0

私はin2csvを使用して、Pythonサブプロセスモジュールを使用して.xlsのフォルダーを.txtファイルに変換しています。

 for filename in os.listdir(raw_data_folder):

    full_filename = raw_data_folder + '\\' + filename
    new_name = filename.split('.')
    new_name = new_name[0] + str('.txt')
    new_name = raw_data_folder + new_name
    process_call = 'in2csv "' + full_filename + '" > "' + new_name + '"'
    subprocess.call(process_call)

認識されない引数:>(new_name)と表示されている間、ゼロ以外の終了ステータス2を取得し続けます。その入力を出力ファイルにどのようにパイプしますか?

4

4 に答える 4

1

リダイレクト演算子「>」はシェルによって処理されるためcall、シェルを使用するように指示する必要があります。

subprocess.call(process_call, shell=True)
于 2013-02-25T22:30:03.133 に答える
0

試してみることをお勧めしenvoyます。subprocessこれは、パイピングを非常にシンプルかつ直感的にする、より優れた API を公開する 小さなラッパーです。

しかし、それだけの場合は、印刷してprocess_callそこからデバッグを試みる必要があります。コードが機能しない明確な理由がわかりません。

于 2013-02-25T22:23:14.807 に答える
0

問題が解決しました。コード エディターでのタブとスペースの問題。皆さん、ありがとうございました。

于 2013-02-26T13:32:19.470 に答える
0

ヒロトが提案したように、shlex.split機能を使用します

>>> import shlex, subprocess
>>> command_line = raw_input()
/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
>>> args = shlex.split(command_line)
>>> print args
['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
>>> p = subprocess.Popen(args) # Success!
于 2013-02-25T22:28:39.183 に答える