2010-11-15 84 views
3

我有一個創建.csv的SAS進程。我有另一個Python進程,等待文件存在,然後對該文件執行某些操作。我想確保在SAS寫完文件之前,Python進程不會開始做它的事情。如何在Windows XP上使用SAS重命名文本文件?

我想我會讓SAS創建.csv,然後在完成後重命名文件。我可以在SAS中進行重命名嗎?然後python進程可以等待,直到重命名的文件存在。

編輯:我不小心發佈了這個問題兩次,然後意外刪除了兩個版本。對於那個很抱歉。

回答

0

您可以在SAS數據集中生成輸出,然後只有在完成後才寫入.csv文件。不知道你如何創建CSV,但我通常只是這樣做:

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

如果你這樣做,在你的SAS代碼的結尾,不會產生csv文件,直到你完成操縱數據。

+0

這是我目前在做什麼,但我想這可能是一個問題,因爲該.csv文件非常大,所以一旦開始SAS寫入文件,蟒蛇可以檢測該文件存在,在sas完成寫作之前開始使用它。 – oob 2010-11-15 01:58:14

2

我覺得比重命名更好的是編寫一個執行SAS程序的shell腳本,然後只有在SAS程序退出後才執行Python腳本而沒有錯誤。這個語法根據您的操作系統而有所不同,但不會太困難。

0

有多種方法可以做到這一點。

Python腳本是否僅監視.csv文件?或者當在該目錄中創建任何新文件時它會被觸發?

  1. 如果只會觸發爲.csv,那麼你可以簡單地輸出到,比方說,一個.txt文件,然後使用x聲明(OS命令),或重命名功能@cmjohns建議將其重命名。

  2. 另一種選擇是,您可以將.csv文件輸出到不同的目錄,然後將其移動到python正在監視的目錄中。只要文件在同一個磁盤中,移動文件將立即完成。

  3. 你也可以修改python腳本僅查找的.csv,然後再做選擇1

  4. 你甚至可以爲Python檢查創建「標誌」文件時,SAS公司已經與完成。 CSV。

但是如果可能的話,我想我會用@jgunnink去。

0

如何讓觀看程序監視單獨的小文件而不是大的CSV文件?這將由SAS寫入一次寫入操作,並降低在寫入完成之前觸發讀取的風險。

data _null_; 
    file 'bigfile.csv' dsd ; 
    set bigdata; 
    put (_all_) (+0); 
run; 
data _null_; 
    file 'bigfile.txt' ; 
    put 'bigfile.csv written'; 
run;