0

Python スクリプトで、次のコマンドを発行します。

def copy_file(csv_file):    #csv_file = "wpa-01.csv"
    subprocess.call(["cp",csv_file,"tempfile.csv"])

エラーが発生します:

cp: cannot stat 'wpa-01.csv' : No such file or directory

-tempfile.csv は有効なファイルであり、開いています -wpa-01.csv を引用符で囲んでみました。

subprocess.call(["cp","\"wpa-01.csv\"","tempfile.csv"])

-「-」の前にエスケープ文字を追加してみました

-ファイル名の前にディレクトリを含めてみました

-ローカルの Linux マシンで gedit を使用していますが (dos2unix のようなソリューションではありません)、スクリプトはリモートの Raspberry Pi で実行されています。

いずれの場合も、同じエラーが発生します。私は解決策に途方に暮れています。助言がありますか?

***ここに問題があります。「wpa-01.csv」は「ライブ」/「動的」ファイルです。そのファイルをリアルタイムで更新しているアクティブなプロセスがあります。cp コマンドを発行するには、ファイルを「dead」/「static」にする必要があると思いますか? これは私の目的には理想的ではありません。modを変えるなどの対処法はありますか?そうでない場合は、別の解決策を見つけようとすることができると思います。

4

1 に答える 1

1
print "wpa-01.csv" in os.listdir(".") #make sure file really does exist
subprocess.call(["cp","\"wpa-01.csv\"","tempfile.csv"],shell=True)

私の推測では、シェルで実行されるcp を見つけるためにパスを使用するように shell=True を設定する必要があると思います... shell=True を使用しない場合、パスは使用されません...

残念ながらすべては推測です...

とにかく、ここにいくつかの裏付けとなる証拠があります:

>>> subprocess.call("copy tmp5.py tmp55.py")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python26\lib\subprocess.py", line 470, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python26\lib\subprocess.py", line 623, in __init__
    errread, errwrite)
  File "C:\Python26\lib\subprocess.py", line 833, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
>>> subprocess.call("copy tmp5.py tmp55.py",shell=True)
        1 file(s) copied.
0
于 2012-10-31T04:04:19.483 に答える