腳本代碼思路總結(jié)及pycharm上傳代碼到github

今天寫了個(gè)腳本,功能是:遍歷一個(gè)目錄,并讀取所有文件內(nèi)容,查看已有的json文件中哪些鍵沒有用到,目錄下的文件都用了json文件中的哪些鍵。

一、用到的包:json,os

1.使用json包的json.loads()來讀取Json文件,并轉(zhuǎn)化成對(duì)象拿到所有的鍵

2.用os模塊來遍歷目錄,靈活運(yùn)用os模塊提供的方法對(duì)file/dir進(jìn)行操作

二、代碼思路:

1.首先針對(duì)題目需求來確定解題思路,因?yàn)閜ython的列表對(duì)于遍歷,添加,剔除,很容易,所以首先確定了主要用列表來做。首先將json文件中的鍵讀出來存放到列表中,另外定義空列表每次讀js文件都設(shè)置成空,讀完文件輸出列表到txt文件中。

2.經(jīng)過調(diào)試發(fā)現(xiàn)循環(huán)引用次數(shù)過多而且文件內(nèi)容很大(首先要遞歸遍歷目錄,讀取文件的時(shí)候還要用行來遍歷,這是第二層,讀取完之后還要和列表中的json鍵進(jìn)行比對(duì),這是第三層循環(huán)),所以先寫了一個(gè)單元測(cè)試來測(cè)試簡單的,直接獲取json文件的鍵來和目錄中其中一個(gè)js文件對(duì)比,經(jīng)過調(diào)試,通過以后引用到主文件里。

3.綜合以上兩點(diǎn),確定三層循環(huán)思路和遞歸遍歷目錄的方法,結(jié)合list和os模塊的方法經(jīng)過調(diào)試完成代碼

三、解題遇挫:

1.因?yàn)閛s模塊我個(gè)人不常用,所以出了不少錯(cuò),用到的方法有:

os.listdir(path)【將傳入路徑下的所有子級(jí)目錄轉(zhuǎn)換成列表】

os.path.join(path, filename) 【將文件名字自和路徑拼接成相對(duì)路徑】

os.path.isfile(file) 【判斷傳入的是否為文件,如果是則打開讀取進(jìn)行下步操作,如果不是,則遞歸繼續(xù)遍歷】

os.path.isdir(file)? 【類似以上,判斷傳入的是否為文件夾,如果是,遞歸打開下一級(jí)】

2.報(bào)錯(cuò)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position?

這個(gè)比較坑,在打開js文件讀取的時(shí)候有編碼格式問題,網(wǎng)上搜出來的答案建議把文件另存為utf8編碼格式,但是由于目錄較多,操作太不方便,我開始尋找另外的方法,通過看open這個(gè)方法我發(fā)現(xiàn)了個(gè)參數(shù)errors,參數(shù)的描述如下

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參數(shù)設(shè)置為ignore,果然可以打開了

3、由于亂用try...except方法導(dǎo)致結(jié)果不準(zhǔn)確,因?yàn)槲野l(fā)現(xiàn)在寫第三層循環(huán)時(shí)因?yàn)橐袛啻宋募邪斜碇械淖址?,然后剔除列表,用list.remove()發(fā)現(xiàn)會(huì)報(bào)錯(cuò),于是我用了一下try異常模塊,代碼果然不報(bào)錯(cuò)了,然而每次的運(yùn)行結(jié)果都不一樣,(因?yàn)閠ry模塊的機(jī)制),后來找了許久原因才發(fā)現(xiàn)這里出問題了,然后取消了try,添加了更為嚴(yán)謹(jǐn)?shù)呐袛喾椒ā?/p>

4、由于寫入方式不合理導(dǎo)致命令運(yùn)行時(shí)間過長,寫入文件過多電腦差點(diǎn)死機(jī)。。。由于寫入位置不合理,發(fā)現(xiàn)每添加一次列表就會(huì)寫入一次,導(dǎo)致文件中存在過多的重復(fù)數(shù)據(jù),然后我就想再把文件讀出來去重寫到另一個(gè)文件中去,發(fā)現(xiàn)這樣做不僅效率變得極低,而且文件依然過大。經(jīng)過不斷嘗試,終于合理的調(diào)整了寫入的位置從而使代碼執(zhí)行效率變高。

以下為所寫代碼:


寫完代碼上傳至github

因?yàn)槲矣玫木庉嬈魇莗ycharm,編輯器比較高級(jí),在擁有g(shù)ithub賬號(hào)和本地Git的情況下可配置好直接使用,比較方便。

1.打開pycharm的file——settings——Vresion Control直接配置github賬號(hào),然后點(diǎn)擊同級(jí)目錄下的git來配置本地Git,因?yàn)間ithub必須結(jié)合本地Git一起使用

2.然后退出settings,找到上面的工具欄的VCS里的 import into Version Control,進(jìn)行代碼提交

3.在提交的時(shí)候報(bào)了個(gè)錯(cuò),錯(cuò)誤如下:

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運(yùn)行,輸入下面兩行代碼即可

git?config?--global?user.email? ? ?加自己郵箱,不必和github注冊(cè)郵箱一致??

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

然后提交成功登陸github官網(wǎng)查看自己剛上傳的項(xiàng)目。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容