大大大大大新闻————爬虫俱乐部新推出了视频讲解环节。小编突然浮现出一个画面——看着视频嗑着瓜子学着stata,妈妈再也不用担心我的stata了!详情请猛戳文章下面的视频。 小编在这里深感抱歉,昨天没有发布推文,因为技术原因,视频上传不了,爬虫俱乐部将在星期六补上一篇推文和视频。 前几天有位粉丝提了这么一个问题:如何将某一文件夹下的子文件夹以及文件的名成输出到.txt文本文档中?下边列出来了3种方法来解决这个问题。 一、 创建文件夹及文件 为了方便大家操作程序,我们首先在e盘根目录下创建一个sample的文件夹,然后在这个文件夹下分别生成5个子文件夹、文本文档、后缀为.xls的Excel文件、后缀为.xlsx的Excel文件、dta文件,程序如下: clear set more off cap mkdir e:/sample/ cd e:/sample/ sysuse auto,clear forvalue i = 1(1)5 { cap mkdir e:/sample/文件夹`i' outsheet using temp`i'.txt,replace export excel using temp`i'.xls,replace export excel using temp`i'.xlsx,replace save temp`i'.dta,replace } 这样我们就创建了一个sample文件夹,其中有子文件夹、.dta文件、.txt文件、.xls文件、.xlsx文件各5个。如下图所示: 二、 用logout和dir命令写入文本文档 通过logout命令将dir结果输出到text文件中,然后用subinfile命令把多余的字符串删除掉,只保留文件名称及其后缀。 输出所有文件夹及文件的名称,程序如下: logout, save(e:/output) text replace : dir subinfile e:/output.txt,from('.+?\d:\d{2}\s+\.{0,2}') fromregex dropempty replace shellout e:/output.txt 运行结果如下: 2 2 输出.dta文件的文件名,程序如下: logout, save(e:/output) text replace : dir *.dta subinfile e:/output.txt,from('.+?\d:\d{2}\s+') fromregex replace shellout e:/output.txt 运行结果如下: 三、用fs和file write命令写入文本文档 读入后缀为.xls的文件 文件名列在同一行 fs *.xls tempname handle file open `handle' using e:/output.txt,write text replace file write `handle' `'`r(files)''' file close `handle' subinfile e:/output.txt, from(`'''') replace shellout e:/output.txt 结果如图所示: 2 列出每个文件名,每行一个 fs *.xls tempname handle file open `handle' using e:/output.txt,write text replace foreach w in `r(files)' { dis '`w'' file write `handle' '`w'' _n } file close `handle' shellout e:/output.txt 结果如图所示: 四、 dos命令:dir 将所有.txt文件的名称导入到output.txt中,程序如下: ! dir *.txt /a-d /b > e:/output.txt shellout e:/output.txt 首先,!表示在stata中调用dos命令,dir是一个dos命令,/a只显示指定属性的目录和文件名名称。如果省略/a, dir将显示除隐藏文件和系统文件之外的所有文件名。如果没有指定attributes情况下使用/a,dir将显示所有文件,包括隐藏文件和系统文件。这里赋给a一个值为-d,表示只显示文件不显示目录,其实这里前*.txt已经指定了文本文档,已经表示显示文件,-d加不加都是一样的,/b 便是不显示标题和摘要,如果没有这个选项,系统的一些数据,如字节、文件数会显示出来,这个在后边的例子中会有展示,> e:/output.txt表示将显示的结果输出到output.txt中。 2 将所有文件(不包括文件夹)的名称输出到output.txt中; ! dir /a-d /b > e:/output.txt shellout e:/output.txt 注意,这里dir后边我们并没有指定特定格式的文件,这时候a的值为-d时,将不会显示出来文件夹的名称,结果如图所示: 3 将.dta文件导入到output.txt,并显示标题和摘要; ! dir *.dta /a-d > e:/output.txt shellout e:/output.txt 结果如图所示: 这里由于没有指定/b选项,所以标题和摘要都显示了出来。 4 如果不指定/a选项,将无法显示隐藏文件和系统文件。我们把temp1.dta这个文件隐藏起来,然后看一下运行结果。 以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。 应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~ 文字编辑: 王明 技术总编:刘贝贝 |
|