- 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")