Это то, что я использую для добавления стандартного CSV в массив ...
function csv_explode($delim=',', $str, $enclose='"', $preserve=false){
$resArr = array();
$n = 0;
$expEncArr = explode($enclose, $str);
foreach($expEncArr as $EncItem){
if($n++%2){
array_push($resArr, array_pop($resArr) . ($preserve?$enclose:'') . $EncItem.($preserve?$enclose:''));
}else{
$expDelArr = explode($delim, $EncItem);
array_push($resArr, array_pop($resArr) . array_shift($expDelArr));
$resArr = array_merge($resArr, $expDelArr);
}
}
return $resArr;
}
Затем вы можете выводить все, что хотите, в цикле foreach.
Команда, которую вы отправили в своем вопросе, работает для меня при копировании файла из виртуальной машины Google Compute Engine на мой локальный компьютер.
$ gcloud compute scp vm1:~/.bashrc ~/Documents/
.bashrc 100% 3515 3.4KB/s 00:00
Я также попытался сделать копию с другой стороны (т.е. с моей локальной машины на виртуальную машину GCE), и она работает:
$ gcloud compute scp ~/Documents/.bashrc vm1:~/temp/
.bashrc 100% 3515 3.4KB/s 00:00
$ gcloud compute scp ~/Documents/.bashrc vm1:~/.bashrc-new
.bashrc 100% 3515 3.4KB/s 00:00
gcloud
опирается на исполняемый файл scp
, присутствующий в ваш PATH
. Аргументы, которые вы передаете команде gcloud scp
, передаются в двоичный файл scp
. Предполагая, что ваши исходный и целевой путь верны, он должен работать.
scp
Однако, исходя из вашего конкретного сообщения об ошибке, я видел, что этот вариант появляется только тогда, когда исходный путь, из которого вы пытаетесь копировать, является каталогом, а не файлом. Для этого конкретного случая вы можете передать аргумент --recurse
(аналогично аргументу -r
, поддерживаемому обычным scp
), который будет рекурсивно копировать все файлы и каталоги в указанном каталоге.
gcloud compute scp --recurse SRC_PATH DEST_PATH