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 命令?这对我的目的来说并不理想。有没有办法解决这个问题,比如改变 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)

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