vs code 无法启动jupyter notebook 修复 亲测
failed to start INotebook in kernel, UI Disabled = false s [Error]: Unable to start Kernel 'base (Python 3.8.3)' due to connection timeout. View Jupyter [log](command:jupyter.viewOutput) for further detail
之前一直运行得好好的。不知道安装了什么依赖库后就这样了。。
在国外网站找了一通后,找到了解决办法:
pip install traitlets==4.3.3
不得不感慨,国外大神多,国内csdn乱ctrl cv.
收起阅读 »
QMT代码详解<一> 行业ETF轮动
#coding:gbk
'''
回测模型示例(非实盘交易策略)
本策略每隔1个月定时触发计算1000能源(399381.SZ)、1000材料(399382.SZ)、1000工业(399383.SZ)、
1000可选(399384.SZ)、1000消费(399385.SZ)、1000医药(399386.SZ)这几个行业指数过去
20个交易日的收益率并选取了收益率最高的指数的成份股并获取了他们的市值数据
随后把仓位调整至市值最大的5只股票上
该策略在股票指数日线下运行
'''
import numpy as np
import math
def init(ContextInfo):
MarketPosition ={}
ContextInfo.MarketPosition = MarketPosition #初始化持仓
index_universe = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
index_stocks = []
for index in index_universe:
for stock in ContextInfo.get_sector(index): # 获取指数的成分股
index_stocks.append(stock)
ContextInfo.set_universe(index_universe+index_stocks) #设定股票池,
ContextInfo.day = 20
ContextInfo.ratio = 0.8
ContextInfo.holding_amount = 5
ContextInfo.accountID='testS'
def handlebar(ContextInfo):
buy_condition = False
sell_condition = False
d = ContextInfo.barpos
print(d)
lastdate = timetag_to_datetime(ContextInfo.get_bar_timetag(d - 1), '%Y%m%d')
date = timetag_to_datetime(ContextInfo.get_bar_timetag(d), '%Y%m%d')
print(date)
index_list = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
return_index = []
weight = ContextInfo.ratio/ContextInfo.holding_amount
size_dict = {}
if (float(date[-4:-2]) != float(lastdate[-4:-2])):
#print '---------------------------------------------------------------------------------'
#print '当前交易日',date,date[-4:-2] 20210101 获取到的月份不一样,这样在每个月初会执行一次这个函数
# 获取的是股票池的
his = ContextInfo.get_history_data(21,'1d','close')
#print "his",his,timetag_to_datetime(ContextInfo.get_bar_timetag(d),"%Y%m%d")
for k in list(his.keys()):
if len(his[k]) == 0:
del his[k]
for index in index_list:
ratio = 0
try:
ratio = (his[index][-2] - his[index][0])/his[index][0]
except KeyError:
print('key error:' + index)
except IndexError:
print('list index out of range:' + index)
return_index.append(ratio)
# 获取指定数内收益率表现最好的行业
best_index = index_list[np.argmax(return_index)]
#print '当前最佳行业是:', ContextInfo.get_stock_name(best_index)[3:]+'行业'
# 获取当天有交易的股票
index_stock = ContextInfo.get_sector(best_index)
stock_available = []
for stock in index_stock:
if ContextInfo.is_suspended_stock(stock) == False: # 是否停牌
stock_available.append(stock)
for stock in stock_available:
if stock in list(his.keys()):
#目前历史流通股本取不到,暂用总股本
if len(his[stock]) >= 2:
stocksize =his[stock][-2] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
elif len(his[stock]) == 1:
stocksize =his[stock][-1] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
else:
return
size_sorted = sorted(list(size_dict.items()), key = lambda item:item[1]) # 根据股本顺序排序
pre_holding = []
for tuple in size_sorted[-ContextInfo.holding_amount:]: # 最好不要占用关键词
pre_holding.append(tuple[0])
#print '买入备选',pre_holding
#函数下单
if len(pre_holding) > 0:
sellshort_list = []
for stock in list(ContextInfo.MarketPosition.keys()): # 遍历持仓,如果不在当前条件范围内,卖出
if stock not in pre_holding and (stock in list(his.keys())):
order_shares(stock,-ContextInfo.MarketPosition[stock],'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('sell',stock)
sell_condition = True
sellshort_list.append(stock)
if len(sellshort_list) >0: # 这句多余
for stock in sellshort_list:
del ContextInfo.MarketPosition[stock]
for stock in pre_holding:
if stock not in list(ContextInfo.MarketPosition.keys()): # 买入
Lots = math.floor(ContextInfo.ratio * (1.0/len(pre_holding)) * ContextInfo.capital / (his[stock][-1] * 100))
order_shares(stock,Lots *100,'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('buy',stock)
buy_condition = True
ContextInfo.MarketPosition[stock] = Lots *100
如果遇到不懂的,可以关注公众号咨询:
收起阅读 »
图床网站横向对比 测试
网站提供登录,可是,一直是登录不了,点击按钮点击后是一直没有反应。后台做的不好。
不能登录,也就是你上传的图片,就下次想找回,也很难找,除非你找回你的原文章,在原来的文章里面找出原来的链接。
然后图片的话遇到一些美女图会经常误删,也就是这样子的。

就是你的图片链接被吃了。 这也侧面说明图床网站对你的图片进行审查的。
推荐指数:0
2. imgUrl
这个网站的图片也是有审查的,一般而言,二维码就是直接会被删除,所以不建议拿来存放一些公众号二维码等传播性的工具。
优点是速度比较快
推荐指数:3星
3. 七牛
上传下载速度快,并且正常的图片不会屏蔽,二维码也不会被屏蔽。支持很多的工具。可以自定义名字,也就是你上传的图片的URL不再是一串随机的字符,而是可以设定为指定日期,或者你的原来的文件名。
这样对于查找本地文件,或者根据本地的文件名,查找线上的图片文件,都是很有李的。
但是,部署这个有点难度,需要配置一些服务器的内容。比如需要通过API生产token,才可以放入到sharex中,并且需要定时更新。
推荐指数:5星
收起阅读 »
毕业7年,白手起家到资产千万,我的6个致富发财赚钱秘诀 --观后感

她总结了几点,并且有人在评论里面总结了。
1、有时候选择大于努力(投资炒股->炒美股)
2、不努力就没有选择的机会(名校本科+研究生+充分准备面试技巧+争取工作调动)
3、关键点很重要,在最关键的时候,必须全力一击!
4、富贵险中求,适当冒一点险(风控能力)
5、越早开始存钱,越好
6、打工是发不了财的、但是前期要积累工作经验和锻炼品质,竭尽全力把工作做好!再想办法开拓其他的赚钱方式!
基本都是很认同她的说法。
以后需要不断地思考,思考未来。该集中努力的地方得一定努力才行。
最后附上视频链接:
https://www.youtube.com/watch?v=094BcDIc0LM
收起阅读 »
github pages是可以被百度检索到的,网上的文章都是瞎扯

有图有证。
看来还是继续用回github pages吧。
优矿回测可转债 代码 教程
可是碍于非科班出生, 对于编程的一窍不通, 所以大部分止步于简单的数据统计.
比如采用excel对采集来的数据,手工测试与验证, 高级点的可以应用一些excel函数进行简单回测.
这里会有一个烦人且第一大障碍, 就是需要有采集来的数据. 首先保证这个数据的完整性与准确性. 这一步其实已经过滤掉想要回测的80%的人了. 具体优矿支持的数据。

优矿支持的数据
- 股票:沪深交易所股票的基本信息以及日/分钟级别的股票行情。
- 财务报表:沪深港上市公司披露的2007年会计准则变更以来的所有财务报表数据,包含三大报表和财报附注等细节。
- 公司行为:沪深上市公司业绩预告,业绩快报,IPO,配股,分红,拆股,股改等信息。
- 基金:场内外各类基金的基本信息,日/分钟级别的场内基金行情,日级别的场外基金净值,以及基金资产配置,收益情况,净值调整等信息。
- 期货:国内四大期货交易所期货合约的基本信息,日/分钟的期货行情,以及国债期货的转换因子等信息。
- 指数:国内外指数基本信息,日/分钟级别的指数行情,以及指数成分构成情况,指数成分股权重情况等信息。
- 港股:香港交易所股票基本信息以及日级别的股票行情。
- 大宗商品:国内各个品种(包括期货合约可交割品种)的大宗商品现货价格行情,以及产销量,库存等信息。
- 债券:债券/回购基本信息,日级别的债券/回购行情,以及发行上市,付息,利率,评级和评级变动,债券发行人评级及变动,担保人评级及变动等信息。
- 期权:上交所期权合约的基本信息,日/分钟级别的期权行情,以及每日盘前静态数据等信息。
- 宏观产业:中国及全球各国宏观指标,行业经济指标等数据。
特色数据
- 股票/指数等品种的量化因子库
- 雪球、股吧等社交媒体数据
- 主流媒体新闻文本和结构化数据
- 主流渠道公告文本和结构化数据
- 淘宝、天猫等电商数据
其实其他的聚框,米宽,箩筐等等,都是大同小异的,本文只是挑选笔者使用比较多的优矿来介绍. 不过现在优矿并不支持实盘.
本文只是做一个量化平台框架的基本介绍, 后续的文章会有进阶, 加入买卖操作, 计算最大回撤, 以及更为复杂的多因子回测. 只要有的数据,基本都可以拿来加入到你的模型之中.
##################################################################

因为优矿本身并不支持可转债的交易,所以系统内置的order,buy,sell函数是无法应用到可转债上面。
不过只要能够获取到每日的行情数据,那么我们就可以自己构造一个交易系统。
核心就就是每次保存你的持仓信息,等到下一次调仓时,对持仓进行比较,对于调出的转债进行移除,新加的转债进行加入。 然后统计一下当前市值,记录下来,就可以得到收益率曲线。
部分代码如下:
import datetime
start = '2018-01-01' # 回测起始时间
end = '2021-05-28' # 回测结束时间
benchmark = 'HS300' # 策略参考标准
freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 5 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd' 时间间隔的单位为交易日,
hold_num = 10 # 持有转债的个数
def initialize(context):
global MyPosition, HighValue, MyCash, Withdraw, HoldRank, HoldNum,Start_Cash
MyPosition = {} #持仓
MyCash = 1000000 #现金
Start_Cash= 1000000
HighValue = MyCash #最高市值
Withdraw = 0 #最大回撤
HoldRank = hold_num #排名多少之后卖出
HoldNum = hold_num #持债支数
def bonds(beginDate=u"20170101",endDate=u"20201215",EB_ENABLE=False):
code_set = set()
df = DataAPI.MktConsBondPremiumGet(SecID=u"",
tickerBond=u"",
beginDate=beginDate,
endDate=endDate,
field=u"",
pandas="1")
cb_df = df.tickerBond.str.startswith(('12', '11'))
df = df[cb_df]
cb_df = df.tickerBond.str.startswith('117')
df = df[~cb_df]
if not EB_ENABLE:
eb = df.secShortNameBond.str.match('\d\d.*?E[123B]') # TODO 判断EB是否过滤
df = df[~eb]
ticker_list =
for _, row in df[['tickerBond', 'secShortNameBond', 'tickerEqu']].iterrows():
if row['tickerBond'] not in code_set:
ticker_list.append((row['tickerBond'], row['secShortNameBond'], row['tickerEqu']))
code_set.add(row['tickerBond'])
return list(code_set)
def handle_data(context):
global MyPosition, HighValue, MyCash, Withdraw, HoldRank, HoldNum,Start_Cash
today_date = context.now.strftime('%Y%m%d')
#每天重新计算双低排名
ticker_list=bonds(today_date,today_date)
data = DataAPI.MktConsBondPerfGet(beginDate=today_date,endDate=today_date,secID='',tickerBond=ticker_list,
tickerEqu=u"",field=u"",pandas="1")
data['secID']=data['tickerBond']
data.set_index('secID',inplace=True)
data['DoubleLow'] = data['closePriceBond'] + data['bondPremRatio']
data = data.sort_values(by="DoubleLow" , ascending=True)
PosValue = MyCash
#抛出不在持有排名HoldRank的
for stock in MyPosition.keys():
try:
CurPrice = data.loc[stock]['closePriceBond']
except:
last_date = (context.now + datetime.timedelta(days=-7)).strftime('%Y%m%d')
CurPrice=get_last_price(stock,last_date,today_date)
PosValue += MyPosition[stock] * CurPrice * 10 #计算当前市值
if stock not in data.index[:HoldRank]:
# 省略若干
log.info('{} 卖出{},{},价格:{}'.format(today_date,stock,name,CurPrice))
if PosValue > HighValue:HighValue = PosValue
if (HighValue - PosValue) / HighValue > Withdraw:Withdraw = (HighValue - PosValue) / HighValue
#买入排在HoldRank内的,总持有数量HoldNum
min_hold = min(HoldRank,len(data.index))
for i in range(min_hold):
if len(MyPosition) >= HoldNum:break
if data.index[i] not in MyPosition.keys():
# 省略若干
log.info('{} 买入{}, {}, 价格{}, 溢价率{}'.format(today_date,data.index[i],name,price,cb_ration))
ratio = (PosValue-Start_Cash)/Start_Cash*100
log.info(today_date + ': 最高市值 ' + str(HighValue) + ' , 当前市值 ' + str(PosValue) + '收益率 : '
+str(ratio)+'% , 最大回撤 ' + str(round(Withdraw*100,2))+'%') [/i][/i]
[i]欢迎讨论探索,星球里面有更多的完整策略与代码,回测数据,结论资源。
[/i] 收起阅读 »
30天学会Golang
附github目录图以及github地址
https://github.com/Rockyzsu/GolangLearning

同时欢迎关注公众号: 30天尝试新事情

收起阅读 »
Goland 配置vim vimrc文件 附配置文件
只好自己写一个简单的教程来纠正下。
在Goland编辑器下,使用vim插件,可以在Goland 这个IDE上运行vim编辑器操作。

很多的vim操作用的是k-vim大神的配置文件,所以这里需要修改Goland的默认vim配置文件。
Goland的vimrc文件为 .ideavimrc ,位于C:\Users\你的用户名下面。
如果没有就新建一个,需要在gitbash下新建,不然windows系统是不能建一个 . 开头的文件的。
或者把k-vim的配置文件拷贝过滤,修改下名字,改为 .ideavimrc 就可以了。
当然,这个k-vim的一些配置需要做一些修改。因为这个是Linux下运行的shell的,有一些插件或者主题是不使用与Goland的,把不适用的注释掉即可。
这里我也提供一个修改后的k-vim版本的.ideavimrc,下载后拷贝到C:\Users\用户名 下就可以了。
记得重启下Goland。
关注公众号后,后台回复: vim 即可

收起阅读 »
【手把手教程】空投币怎么领取,以ShiBZilla为例
记住,不要花钱,要的是白嫖,只要要你花一分钱,果断把网页关闭,然后打开手机,打几盘王者荣耀。
既然是送钱,那么会有什么风险吗? 有,就是最后没有送钱成功,空投的币种发行失败,也就你没有撸到羊毛,你损失的时间成本,当然如果你时间不值钱,就没有什么损失的啦。
好。准备的东西。
1. 钱包地址:
就是一串数字。
钱包地址类似于你的家的地址:

别人给你送钱了,你得有个钱包来接呀。
钱包获取也很简单,找个冷钱包,自动生成。冷钱包只是个皮包,即使冷钱包丢了也没关系的。
关键不要丢的是助记词。
助记词就是私钥,你有助记词,管它倒闭不倒闭,跟你没有任何关系。
钱包公司只是给你提供服务,私钥在,财产永远是你的。
助记词就是给你十来二十个单词,你记住每个单词的顺序。你用这些单词的顺序就可以完整的恢复你的钱包,在其他钱包也可以。
所以一定要保存好你的助记词。 最好用纸抄下来。
冷钱包随意找一个能用的即可。比如我用的是比特派,或者 IMtoken。到应用市场下载后,在手机里面打开,找到对应的币种。
这里我需要拿出 BSC钱包的地址就可以。 一个钱包里面可以自动生成N个币种的钱包地址。

这里点进去BSC钱包。
里面的收款地址就是你要提供给SHIBZILLA币官方的。

点进去后就是见到你的地址

第一步拿到自己的钱包地址了。
第二部。
找到有空投币的官网地址:
http://shibzillacoin.net/?ShiBZilla=B09D2
比如我上面这个,后面带了一个推广码,很明显,这是我的一个推广链接。 我推广一个人领取空投币,我自己也可以得到一部分的空投币奖励。
复制并分享你的链接,你和被邀请人同时奖励 10亿枚 ShiBZilla,每人最多可邀请 40人,奖励最高可获得 400亿枚 ShiBZilla。
所以为了感谢我写的这篇科普文章,你可以用的链接去领取空投币ShiBZilla。
虽然我也不知道这个币市干嘛用的,只是长得很像shibi。
哦,对了,当时shibi也是这样子空投的,如果当时没有看上的人,后面就得几万块几万块的用真金白银买回来了。
本来白送的呢。
ShiBZilla币发空投,留一个BSC地址发10亿币,最后一天时间:
http://shibzillacoin.net/?ShiBZilla=B09D2
白赚的币大家可以去领一领,说不定上市值几百块钱。
收起阅读 »
imgtu为什么上传二维码的图片会被删除 甚至账户被封?
为何二维码会被删除?
因为二维码很容易被用于黑产项目,而且无法直接识别,所以禁止上传含有二维码的相关图片.
截图软件sharex 上传到七牛图床 设置上传文件名与本地名一样
不过网上的文章使用的上传文件名是按照当时的日期设定的。
什么意思呢?
比如我用sharex截图后,截图的文件叫 hello.png ,如果用sharex上传到七牛后,它的文件名就变成了 202111282121.png,
全路径就是 http://xxx.example.com/202111282121.png.
这里假设你使用的上传的配置key如下:%y%mo%d%h%mi%s.png这样会造成一个麻烦。
比如的截图文件名是20211128210910.png, 21点09分10秒,然后我过了1秒钟后才开始上传,我一般手动上传,因为不希望每一个截图都上传,这样会导致部分个人隐私数据不自觉传出去,可能泄露敏感信息。
所以过了1秒钟后的上传到服务器的文件名为20211128210911.png , 21点09分11秒。
这个造成本地文件名与远程文件名不一样。如果后续你想在本地找回原来文件的副本,你根据服务器的URL地址,在本地是找不到的,只能先把文件名的日期时间精确到分钟,然后秒位使用* 星号匹配符来查找。 这样多了一重手续。
或者我有本地的截图的文件名,我想直接构造成服务器上的文件名,这是我就不能直接 http://xxxx.example/本地文件名.png 这样来构造了。 因为远程服务器的文件名和本地不一样。
网上找一一圈都没找到对应的办法,然后到官网找了一番,终于找到解决办法,很简单。
把key的值设置为 $filename$
即可。
markdown 收起阅读 »
hexo使用七牛图床 放到github pages上无法显示
问题的根源在于 谷歌浏览器 , 在https的网站里面放http格式的图片,那么http的链接会被自动转为https,从而导致找不到链接,会显示叉叉
效果如下图显示:
在本地运行服务器:
hexo s
启动本地的:http://localhost:4000
得到的网页是正常的:

目前调试中,后续把结果更新下。
###更新#####
晕死,刚写完文章就找到原因。
hexo 网站图床图片不显示
最近搭建了一个七牛云图床,外链不用 HTTPS 的话是免费的,搭配 PicGo 和 Typora 使用,在 Markdown 中插入图片非常方便,只需要复制图片,粘贴到 Typora 中,就可以自动调用 PicGo 上传并且获取链接了,但是在使用中遇到一个问题,本站在本地运行 hexo server 的情况下访问,所有图片显示正常,但是上传到服务器之后再访问,就会出现图片不显示的情况,复制图片 URL 访问也可以访问到。最终在 hexo 的 github 页面问到了可能是 Mixed Content 的问题。
具体来说,在调试工具中发现,显示存在 HTTP 和 HTTPS 资源混用的情况,导致不会读取资源。先后尝试了在 hexo\themes\...\layout\_partial\head.ejs 中添加
1 2
<meta name="referrer" content="no-referrer" /> <meta http-equiv="Content-Security-Policy" ontent="upgrade-insecure-requests">
都不起作用,而升级七牛云为 HTTPS 流量又要收费,遂干脆把网站改回到了 HTTP,因为是静态页面其实也没什么关系,而且每 3 个月重新注册一个证书有时候懒的搞,反而导致页面不能正常访问。
收起阅读 »
猫池c3pool无法访问,只能用梯子
如果现在停掉,然后重新运行挖矿程序的话,就无法连上猫池了。
* CPU AMD EPYC 7K62 48-Core Processor (1) 64-bit AES VM
L2:8.0 MB L3:16.0 MB 2C/2T NUMA:1
* MEMORY 3.6/3.7 GB (96%)
DIMM 0: 4 GB RAM @ 0 MHz DIMM 0
* MOTHERBOARD Tencent Cloud - CVM
* DONATE 0%
* ASSEMBLY auto:ryzen
* POOL #1 mine.c3pool.com:17777 algo auto
* COMMANDS 'h' hashrate, 'p' pause, 'r' resume, 's' results, 'c' connection
[2021-11-28 00:08:00.267] net mine.c3pool.com:17777 connect error: "operation canceled"
[2021-11-28 00:08:25.292] net mine.c3pool.com:17777 connect error: "operation canceled"
[2021-11-28 00:08:50.317] net mine.c3pool.com:17777 connect error: "operation canceled"
看了还是得用个梯子了。目前篮灯只支持在GUI模式下,在centos服务器的ssh无法启动。 哎,早知道选一台windows的服务器。
腾讯云 centos 门罗币 XMR 挖矿 教程 附代码
并且,这不是因为腾讯云屏蔽的原因,在本地自己电脑上也是无法挖,除非挂上梯子。 收起阅读 »
炒美股需要知道的3个工具
- tradingview.com K线王
- finviz.com 找股器、个股信息
- koyfin.com 免费的 Bloomberg
写作内容草稿
cannot install, GOBIN must be an absolute path
把GOPATH替换为完整的路径,比如C:\User\Admin\go\bin 即可解决问题。
原创文章,转载请注明出处:
http://30daydo.com/article/44290
收起阅读 »
gin can not run reasons: c.engine.AppEngine undefined
# github.com/gin-gonic/gin
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\context.go:735:13: c.engine.AppEngine undefined (type *Engine ha
s no field or method AppEngine)
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:154:3: unknown field 'UseRawPath' in struct literal of ty
pe Engine
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:156:3: unknown field 'UnescapePathValues' in struct liter
al of type Engine
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:508:11: engine.UseRawPath undefined (type *Engine has no
field or method UseRawPath)
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:510:20: engine.UnescapePathValues undefined (type *Engine
has no field or method UnescapePathValues)
源码:
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// 1.创建路由
r := gin.Default()
// 2.绑定路由规则,执行的函数
// gin.Context,封装了request和response
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "hello World!")
})
// 3.监听端口,默认在8080
// Run("里面不指定端口号默认为8080")
r.Run(":8000")
}
版本兼容性问题,降级到 gin@1.7.2 即可解决问题。
当前最新的版本为1.7.5
降级方法:
go get github.com/gin-gonic/gin@v1.7.2
原创文章,转载请注明出处:
http://30daydo.com/article/44289
收起阅读 »
golang文件操作之 移动文件
package main
import (
"log"
"os"
)
func main() {
oldLocation := "/var/www/html/test.txt"
newLocation := "/var/www/html/src/test.txt"
err := os.Rename(oldLocation, newLocation)
if err != nil {
log.Fatal(err)
}
}
原创文章,转载请注明出处:
http://30daydo.com/article/44288
收起阅读 »











