cp:无法统计...没有这样的文件或目录

时间:2012-10-31 03:14:19

标签: python linux

在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”是一个“实时”/“动态”文件。有一个活动进程正在实时更新该文件。我认为该文件必须是'dead'/'static'才能发出cp命令?这对我的目的来说并不理想。有没有办法解决这个问题,比如改变mod或什么?如果不是,我想我可以尝试寻找替代解决方案。

1 个答案:

答案 0 :(得分:0)

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

我的猜测是你需要设置shell = True,以便使用你的路径在shell中执行cp 执行... 如果你不使用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