在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或什么?如果不是,我想我可以尝试寻找替代解决方案。
答案 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