如何在Windows XP上使用SAS重命名文本文件?
我有一个创建.csv的SAS进程。我有另一个Python进程,等待文件存在,然后对该文件执行某些操作。我想确保在SAS写完文件之前,Python进程不会开始做它的事情。如何在Windows XP上使用SAS重命名文本文件?
我想我会让SAS创建.csv,然后在完成后重命名文件。我可以在SAS中进行重命名吗?然后python进程可以等待,直到重命名的文件存在。
编辑:我不小心发布了这个问题两次,然后意外删除了两个版本。对于那个很抱歉。
您可以在SAS数据集中生成输出,然后只有在完成后才写入.csv文件。不知道你如何创建CSV,但我通常只是这样做:
data _null_;
file './ouptut_file.csv' dlm=',';
set dataset_name;
put var1 var2;
run;
如果你这样做,在你的SAS代码的结尾,不会产生csv文件,直到你完成操纵数据。
我觉得比重命名更好的是编写一个执行SAS程序的shell脚本,然后只有在SAS程序退出后才执行Python脚本而没有错误。这个语法根据您的操作系统而有所不同,但不会太困难。
有多种方法可以做到这一点。
Python脚本是否仅监视.csv文件?或者当在该目录中创建任何新文件时它会被触发?
如果只会触发为.csv,那么你可以简单地输出到,比方说,一个.txt文件,然后使用x声明(OS命令),或重命名功能@cmjohns建议将其重命名。
另一种选择是,您可以将.csv文件输出到不同的目录,然后将其移动到python正在监视的目录中。只要文件在同一个磁盘中,移动文件将立即完成。
你也可以修改python脚本仅查找的.csv,然后再做选择1
你甚至可以为Python检查创建“标志”文件时,SAS公司已经与完成。 CSV。
但是如果可能的话,我想我会用@jgunnink去。
如何让观看程序监视单独的小文件而不是大的CSV文件?这将由SAS写入一次写入操作,并降低在写入完成之前触发读取的风险。
data _null_;
file 'bigfile.csv' dsd ;
set bigdata;
put (_all_) (+0);
run;
data _null_;
file 'bigfile.txt' ;
put 'bigfile.csv written';
run;
这是我目前在做什么,但我想这可能是一个问题,因为该.csv文件非常大,所以一旦开始SAS写入文件,蟒蛇可以检测该文件存在,在sas完成写作之前开始使用它。 – oob 2010-11-15 01:58:14