脚本代码思路总结及pycharm上传代码到github

2019-01-08  本文已影响0人  小赵天1

今天写了个脚本,功能是:遍历一个目录,并读取所有文件内容,查看已有的json文件中哪些键没有用到,目录下的文件都用了json文件中的哪些键。

一、用到的包:json,os

1.使用json包的json.loads()来读取Json文件,并转化成对象拿到所有的键

2.用os模块来遍历目录,灵活运用os模块提供的方法对file/dir进行操作

二、代码思路:

1.首先针对题目需求来确定解题思路,因为python的列表对于遍历,添加,剔除,很容易,所以首先确定了主要用列表来做。首先将json文件中的键读出来存放到列表中,另外定义空列表每次读js文件都设置成空,读完文件输出列表到txt文件中。

2.经过调试发现循环引用次数过多而且文件内容很大(首先要递归遍历目录,读取文件的时候还要用行来遍历,这是第二层,读取完之后还要和列表中的json键进行比对,这是第三层循环),所以先写了一个单元测试来测试简单的,直接获取json文件的键来和目录中其中一个js文件对比,经过调试,通过以后引用到主文件里。

3.综合以上两点,确定三层循环思路和递归遍历目录的方法,结合list和os模块的方法经过调试完成代码

三、解题遇挫:

1.因为os模块我个人不常用,所以出了不少错,用到的方法有:

os.listdir(path)【将传入路径下的所有子级目录转换成列表】

os.path.join(path, filename) 【将文件名字自和路径拼接成相对路径】

os.path.isfile(file) 【判断传入的是否为文件,如果是则打开读取进行下步操作,如果不是,则递归继续遍历】

os.path.isdir(file)  【类似以上,判断传入的是否为文件夹,如果是,递归打开下一级】

2.报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 

这个比较坑,在打开js文件读取的时候有编码格式问题,网上搜出来的答案建议把文件另存为utf8编码格式,但是由于目录较多,操作太不方便,我开始寻找另外的方法,通过看open这个方法我发现了个参数errors,参数的描述如下

errors is an optional string that specifies how encoding errors are to be handled---this argument should not be used in binary mode. Pass'strict' to raise a ValueError exception if there is an encoding error(the default of None has the same effect), or pass 'ignore' to ignore errors. (Note that ignoring encoding errors can lead to data loss.)See the documentation for codecs.register or run 'help(codecs.Codec)'for a list of the permitted encoding error strings.

这就很nice了,我把errors参数设置为ignore,果然可以打开了

3、由于乱用try...except方法导致结果不准确,因为我发现在写第三层循环时因为要判断此文件中包含列表中的字符串,然后剔除列表,用list.remove()发现会报错,于是我用了一下try异常模块,代码果然不报错了,然而每次的运行结果都不一样,(因为try模块的机制),后来找了许久原因才发现这里出问题了,然后取消了try,添加了更为严谨的判断方法。

4、由于写入方式不合理导致命令运行时间过长,写入文件过多电脑差点死机。。。由于写入位置不合理,发现每添加一次列表就会写入一次,导致文件中存在过多的重复数据,然后我就想再把文件读出来去重写到另一个文件中去,发现这样做不仅效率变得极低,而且文件依然过大。经过不断尝试,终于合理的调整了写入的位置从而使代码执行效率变高。

以下为所写代码:

写完代码上传至github

因为我用的编辑器是pycharm,编辑器比较高级,在拥有github账号和本地Git的情况下可配置好直接使用,比较方便。

1.打开pycharm的file——settings——Vresion Control直接配置github账号,然后点击同级目录下的git来配置本地Git,因为github必须结合本地Git一起使用

2.然后退出settings,找到上面的工具栏的VCS里的 import into Version Control,进行代码提交

3.在提交的时候报了个错,错误如下:

Can't finish GitHub sharing process

Successfully created project 'Test' on GitHub, but initial commit failed:

*** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: empty ident name (for (null)>) not allowed during executing git -c core.quotepath=false commit -m "Initial commit" --

原来是配置Git的账户没有登记,于是找到git目录下的Git Bash运行,输入下面两行代码即可

git config --global user.email     加自己邮箱,不必和github注册邮箱一致  

git config --global user.name     加自己的用户名

然后提交成功登陆github官网查看自己刚上传的项目。

上一篇下一篇

猜你喜欢

热点阅读