file write和filewrite( )傻傻分不清

2017-07-06 付彩月 爬虫俱乐部 爬虫俱乐部

是file write还是filewrite( )?file write是谁,filewrite( )又是谁?file write和filewrite( )傻傻分不清。file write和filewrite( )虽然貌似,但其作用和功能差别很大。今天美女作者就带大家详细了解下file write和filewrite( )。

一、 file write 

file write是用于写入TXT格式文件和二进制文件的命令,细心的朋友会发现它在以前的推文中跑过很多次龙套,今天,它可是主角之一。

看爬虫君给你具体举几个栗子。

譬如在当前路径生成一个名为Sonnet116的TXT文件,写一句古诗,使用如下命令:

file open billet_doux using Sonnet116.txt, write

file write billet_doux " It is the star to every wandering bark,"

file close billet_doux

来看看结果:

注意我们要生成的文件之前不能存在,如果存在,就要加上replace选项:

file open billet_doux using Sonnet116.txt, write replace

file write billet_doux "Within his bending sickle's compass come:" _n(1)

file write billet_doux "Whose worth's unknown, "

file write billet_doux "although his height be taken." _n

file close billet_doux

_n(1) 选项表示生成新的一行,不然下一次写入的诗句会紧跟上一句。括号中的参数为需要新生成的行数,如果不写则默认为生成1行。除_n(#)选项外,还有 _skip(#)选项,插入你想要数量的空格,和_tab(#),插入你想要数量的制表符等选项。有兴趣的朋友可以查看help来仔细研究。

现在,我们有了不一样的同名文件:

如果要对已存在的文件进行续写,就要用append选项:

file open billet_doux using Sonnet116.txt, write append

file write billet_doux "Love's not Time's fool, though rosy lips and cheeks" _n

file write billet_doux "Whose worth's unknown, although his height be taken."

file close billet_doux

除字符串外,还可以写入数值,当然数值就不用加双引号了。此外,还可以写入宏和计算结果,比如:

clear

sysuse auto

mkmat rep78 price mpg in 1/2, matrix(kk)

local r = rowsof(kk)

local c = colsof(kk)

file open auto using data.txt, write replace

file write auto "rep78" _tab "price" _tab "mpg" _tab _n

 forvalues i=1(1)`r' {

   forvalues j=1(1)`c' {

     file write auto (kk[`i',`j']) _tab

   }

   file write auto _n

 }

file write auto %9.0gc (666+666)

file close auto

呐,第二行和第三行我们借助宏写入了矩阵kk的各个元素,第四行我们则计算了666+666的结果,并以我们想要的格式写入。最后,提醒大家,记得写完后记得file close,不然写入的内容可能会没有保存。

二、 filewrite( )

 filewrite()是字符串写入专用函数,并且返回数值报告结果。看爬虫君举栗子。

 scalar num=filewrite("sonnet18.txt","Sonnet18")

 di num

文件写入结果如下:

并且返回了“8”,指我们生成了一个新的文件,并写入了8个字符。

scalar num1=filewrite("sonnet18.txt","But thy eternal summer shall not fade,",1)

di num1

参数1表示,如果该文件已经存在,就先删除,再生成。返回的“38”还是我们输入字符串的长度。

scalar num2=filewrite("sonnet18.txt","But thy eternal summer shall not fade,",2)

di num2

参数2表示衔接已有文件的结尾,写入字符串。返回的“81”表示,经过写入后的文件中的字符串长度是81。

注意啦,如果文件已存在,但是没有声明1或2,那么就会出错,返回值是一个负数。

file write和filewrite( ),你分清了吗?!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:高娜娜

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部  


微信扫一扫
关注该公众号