- windows上的斜槓
os.path.join()—將多個字符串連接,注意使用斜槓\(若在OS X上是\)
import os
print(os.path.join("AA","BB","CC"))
>>>>AA\BB\CC
- 當前工作目錄
import os
print(os.getcwd())
>>>E:\ticke_grabbing\re_wri_file
- 絕對路徑和相對路徑
絕對路徑:總是從根文件夾開始的。
相對路徑:相對於程序的工作目錄
.代表當前目錄
…代表父文件夾
- 創建新文件夾
print(os.makedirs("Test"))
- 處理絕對路徑和相對路徑
os.path模塊提供了一些函數,返回一個相對路徑的絕對路徑
import os
url=os.path.abspath('.')
print(url)
url=os.path.isabs('.')
print(url)
url=os.path.relpath('.','E:\\wampserver\\_')
print(url)
url=os.path.dirname("E:\\wampserver\\wampserver\\1.txt")
print(url)
url=os.path.basename("E:\\wampserver\\wampserver\\1.txt")
print(url)
url=os.path.split("E:\\wampserver\\wampserver\\1.txt")
print(url)
- 查看文件大小和文件夾內容
size=os.path.getsize(r"E:\wampserver\_\wampserver")
print(size)
file=os.listdir(r"E:\wampserver\_\wampserver")
print(file)
>>>>>['1.txt', 'wampserver3.0.6_x86_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10.exe']
- 檢查路徑的有效性
print(os.path.exists(r"E:\wampserver\_\wampserver"))
print(os.path.isdir(r"E:\wampserver\_\wampserver"))
print(os.path.isfile(r"E:\wampserver\_\wampserver"))
- 文件讀寫過程
讀取文件分爲三步:
1.調用oepn()函數,返回一個File對象
2.調用File對象的read()或write()方法
3.調用File對象的close()方法,關閉該文件
用open函數打開一個文件,oepn(“打開文件的地址”,什麼方式打開)
a—追加
b—二進制
r—讀的方式
w—寫的方式
讀取文件有read()和readline()方法:readline方法讀文件中每一行,返回字符串
寫入:
write(“xxx”)
- 用shelve模塊保存變量
shelFile=shelve.open("mydata")
cats=['1','2','3']
shelFile["cats"]=cats
print(shelFile['cats'])
print(list(shelFile.keys()))
print(list(shelFile.values()))
shelFile.close()
- 小練習:
'''
randomQuiz.py
1.創建35份不同的測試試卷
2.爲每份試卷創建50個選擇題。次序隨機
3.爲每個問題提供一個正確答案,三個隨機錯誤答案
4.將測試試卷寫到35個文本文件中
5.將答案寫到35個文件中
'''
'''
capitals={'0': '0', '1': '1', '2': '2', '3': '3', '4': '4', '5': '5', '6': '6', '7': '7', '8': '8', '9': '9', '10': '10', '11': '11', '12': '12', '13': '13', '14': '14', '15': '15', '16': '16', '17': '17', '18': '18', '19': '19', '20': '20', '21': '21', '22': '22', '23': '23', '24': '24', '25': '25', '26': '26', '27': '27', '28': '28', '29': '29', '30': '30', '31': '31', '32': '32', '33': '33', '34': '34', '35': '35', '36': '36', '37': '37', '38': '38', '39': '39', '40': '40', '41': '41', '42': '42', '43': '43', '44': '44', '45': '45', '46': '46', '47': '47', '48': '48', '49': '49'}
'''
import random
import os
capitals={}
for i in range(50):
capitals[str(i)]=str(i)
for i in range(50):
filename_q="quiz"+str(i)+".txt"
file_q=open(filename_q,"w")
file_q.write("Name: \n")
file_q.write("\n\n")
filename_A="Answer"+str(i)+".txt"
file_A=open(filename_A,"w")
state=list(capitals.keys())
random.shuffle(state)
for x in range(50):
correctAnswer=capitals[state[x]]
wrongAnser=list(capitals.values())
del wrongAnser[wrongAnser.index(correctAnswer)]
wrongAnser=random.sample(wrongAnser,3)
file_q.write("%s.witch%s:thissss answer ok?\n"%(str(x),state[x]))
answerOptions=[correctAnswer]+wrongAnser
random.shuffle(answerOptions)
for y in range(4):
file_q.write("%s :%s \n"%("ABCD"[y],answerOptions[y]))
file_A.write(str(x)+":"+"correct answer:%s \n"%("ABCD"[answerOptions.index(correctAnswer)]))
file_q.close()
file_A.close()
'''
本次是 實現多重剪切板
1.如果輸入save 那麼將剪切板保存到關鍵字
2.若輸入list 那麼將給所有關鍵字列出來
3.輸入關鍵字則將關鍵字對應的文本 輸入到剪切板上
運用到庫:
pyperclip
shelve---主要是利用key:values特性
'''
import pyperclip
import shelve
def mc_Bord(key_name=None,spam=None):
if key_name=="save":
clip=pyperclip.paste()
if spam==None:
return "請輸入關鍵字"
else:
sh=shelve.open("save")
sh[spam]=clip
print(sh[spam])
sh.close()
return "儲存成功"
elif key_name=="list":
sh=shelve.open("save")
print(list(sh.keys()))
sh.close()
pass
elif key_name==None:
sh=shelve.open("save")
pyperclip.copy(sh[spam])
sh.close()
elif key_name=="delete":
sh=shelve.open("save")
del sh[spam]
sh.close()
print(mc_Bord("delete","s"))
'''
Madlib.py
1.用戶讀取一個文本文件,替換他們所需要的文件後,再保存。
尋找到yyyyy替換爲xxxx
'''
import re
import os
def rele(url,dest_str,repale_str):
if dest_str=="" or repale_str=="":
return "請輸入參數"
else:
regex=re.compile(dest_str+"*")
file=open(url)
txt=file.read()
sub=regex.sub(repale_str,txt)
file.close()
file=open(url,'w')
file.write(sub)
file.close()
rele("T1.txt","yyyyy","xxx")