Python源文件改寫:
## 編寫一個程序,讀取一個python源程序文件,將文件中所有除保留字之外的小寫字母換成字母,並且生成文件要能夠被Python解釋器正確執行。 ##
以下給出程序:
# -*- coding :utf-8 -*-
import keyword
f = open('test.py')
content = f.read()
f.close()
table = ['range','print','list','set','keyword','kwlist','end']
fs = '' #用於存儲改變後的內容
temp = '' #臨時字符串,用於判斷和處理
for ch in content:
if ch.isalpha(): #如果是字母,則加到temp後面,用於後面處理
temp +=ch
else: #如果不是字母,表示一個連續的字母構成的字符串結束,此時ch非字母
if (not keyword.iskeyword(temp)) and (temp not in table): #如果不是保留字和內置方法,將其變成大寫
temp = temp.upper()
fs+=temp #將temp添加到fs
fs+=ch #添加 非字母ch 注意不能和 fs+=temp 位置顛倒
temp = '' #清空臨時字符串,用於下次使用
f = open('test','w')
f.write(fs)
f.close()
這裏我們首先需要導入keyword模塊,因爲根據題目的意思,我們不能改寫保留字母,使用kwlist就可以列舉出所有的保留字母(注意返回的是一個list),同時也可以用iskeyword判斷是不是一個保留字
注意:table 列表是除了保留字之外的關鍵字,如果要使用某些模塊的某些方法,就應該把相應的關鍵字寫到table裏,不然改變後的源程序就不能被Python解釋器執行。
測試如下:
初始的程序及結果:
改變後的程序及結果: