Как переименовать текстовый файл с помощью SAS в Windows XP? - PullRequest
3 голосов
/ 15 ноября 2010

У меня есть процесс в SAS, который создает .csv.У меня есть другой процесс в Python, который ждет, пока файл не существует, а затем что-то делает с этим файлом.Я хочу убедиться, что процесс Python не начнет делать свое дело, пока SAS не закончит запись файла.

Я подумал, что просто SAS создаст .csv, а затем переименует файл после того, как это будет сделано.Могу ли я сделать переименование в SAS?Тогда процесс python может просто подождать, пока существует переименованный файл.

РЕДАКТИРОВАТЬ: Я случайно опубликовал этот вопрос дважды, а затем случайно удалил обе версии.Извини за это.

Ответы [ 5 ]

2 голосов
/ 20 января 2011

Я думаю, что лучше, чем переименование, было бы написать сценарий оболочки, который выполняет программу SAS, а затем выполняет сценарий Python только после завершения программы SAS без ошибок.Синтаксис для этого несколько варьируется в зависимости от вашей ОС, но не будет слишком сложным.

1 голос
/ 15 ноября 2010

В verion 9.2 и более поздних версиях SAS имеет функцию переименования , которая должна работать так, как вы хотите.

0 голосов
/ 03 марта 2017

Как насчет того, чтобы программа просмотра наблюдала за отдельным небольшим файлом вместо большого файла CSV? Это будет записано в одной операции записи SAS и уменьшит риск запуска чтения до того, как запись будет завершена.

 data _null_;
   file 'bigfile.csv' dsd ;
   set bigdata;
   put (_all_) (+0);
 run;
 data _null_;
   file 'bigfile.txt' ;
   put 'bigfile.csv written';
 run;
0 голосов
/ 02 марта 2017

Есть несколько способов сделать это.

Сценарий python отслеживает только файлы .csv? Или он будет запущен, когда в этом каталоге будет создан новый файл?

  1. Если он будет запускаться только в .csv, вы можете просто вывести, скажем, в файл .txt, а затем переименовать его с помощью оператора x (команда OS) или функции переименования, как предложено @cmjohns.

  2. Другой вариант: вы можете вывести файл .csv в другой каталог, а затем просто переместить его в каталог, который отслеживает python. Пока файл находится на том же диске, перемещение файла будет выполнено в одно мгновение.

  3. Вы также можете изменить скрипт Python для поиска только .csv, а затем выполнить опцию 1.

  4. Вы даже можете создать файл "flag" для python, чтобы проверить, когда sas завершил работу с .csv.

Но если возможно, думаю, я бы пошел с @ jgunnink.

0 голосов
/ 15 ноября 2010

Вы можете сгенерировать вывод в наборе данных SAS, а затем записать его в файл .csv, только когда закончите с ним. Не уверен, как вы создаете CSV, но я обычно просто делаю это:

data _null_;
file './ouptut_file.csv' dlm=',';
set dataset_name;
put var1 var2;
run;

Если вы сделаете это в самом конце кода SAS, файл CSV не будет сгенерирован, пока вы не закончите манипулировать данными.

...