SAS是我这个项目的主要软件。我正在使用SAS呼叫7zip。SAS和7zip都是64位版本。目的是读取美国NOAA气象站4年来压缩的数据--大约4,000个气象站,大致如此。16,000份文件
每个文件包含多个、可变长度、未分隔的记录,每个记录都包含给定站点的日期、时间和天气信息(例如,温度、能见度、降水等)。这个问题与阅读记录无关。是关于阅读文件的。
这些文件不使用任何类型的扩展名存储,例如,没有*.txt、*.dat、*.gz、*.tar。在命名文件时,不使用任何定义文件类型的方法。我已经通过在Windows文件资源管理器中打开和关闭“文件扩展名”选项来检查这一点。文件扩展名显示为其他信息,而不是NOAA文件。每个文件名有3个字段。前两个字段定义了一个独特的NOAA气象站(分别为USAF和WBAN ),最后一个字段是年份。以下是一些具有代表性的文件名:
702120-26646-2011年
702120-26646-2012年
702120-26646-2013年
等。
由于文件是压缩的,所以我使用7zip从SAS进行宏调用来解压缩它们。以下是这些调用的SAS宏语法:
year=2011 %至2014年; 管道中的文件名"c:/7-zip/7z.exe x ""C:\data\stuff\weather\data\extracted.zip\extracted\&&usaf-&&wban-&&year\"“-so”lrecl=3000; 跑; %结束;
下面是一个文件的解析代码:
MLOGIC(循环):%DO循环开始;索引变量年;起始值为2011年;停止值为2014年;按值计算为1。 宏变量USAF解析为702120 宏变量WBAN解析为26646 SYMBOLGEN:宏变量年解析到2011年 MPRINT(循环):文件名在管道"c:/7-zip/7z.exe x ""C:\data\stuff\weather\data\extracted.zip\extracted\702120-26646-2011\"“-so”lrecl=3000; (循环):运行; 注:幼稚的IN是: 未命名的管道接入设备, PROCESS=c:/7-zip/7z.exe x "C:\data\stuff\weather\data\extracted.zip\extracted\702120-26646-2011\“-so,RECFM=V,LRECL=3000 Stderr输出: 错误:系统找不到指定的路径。 C:\data\stuff\weather\data\extracted.zip\extracted\702120-26646-2011 系统错误: 系统找不到指定的路径。
显然,语法上没有错误,但是SAS找不到文件。
让我困惑的是,文件存在或驻留在文件夹中,与解析路径所指定的完全相同。
7 7zup调用中是否有错误导致找不到文件?例如,应该使用“-so”以外的7zip选项吗?
这里还会有什么问题吗?欢迎您提出任何建议!
发布于 2018-06-05 14:59:43
SAS现在支持直接读取ZIP文件。试着做这样的事情:
filename in zip "C:\data\stuff\weather\data\extracted.zip"
member="&usaf.-&wban.-&year."
lrecl=3000
;
https://stackoverflow.com/questions/50688585
复制相似问题