python学习之读写文件

  1. windows上的斜杠
    os.path.join()—将多个字符串连接,注意使用斜杠\(若在OS X上是\)
#-*-coding:utf-8 -*-
import os
print(os.path.join("AA","BB","CC"))
>>>>AA\BB\CC
  1. 当前工作目录
#-*-coding:utf-8 -*-
import os
print(os.getcwd())#获取此文件的目录,返回当前目录
>>>E:\ticke_grabbing\re_wri_file
  1. 绝对路径和相对路径
    绝对路径:总是从根文件夹开始的。
    相对路径:相对于程序的工作目录
    .代表当前目录
    …代表父文件夹
  2. 创建新文件夹
print(os.makedirs("Test"))#这个是创建文件夹,若存在则返回报错,若不存在创建后 返回None
  1. 处理绝对路径和相对路径
    os.path模块提供了一些函数,返回一个相对路径的绝对路径
#-*-coding:utf-8 -*-
import os
# print(os.getcwd())#获取此文件的目录,返回当前目录
# print(os.makedirs("Test"))#这个是创建文件夹,若存在则返回报错,若不存在创建后 返回None
url=os.path.abspath('.')#返回当前路径的“绝对路径”
print(url)
url=os.path.isabs('.')#如果参数是绝对路径返回True,若是相对路径返回False
print(url)
url=os.path.relpath('.','E:\\wampserver\\_')#relpath(path,start)---返回start到path到所有字符串路径 ,最好在同一个根目录下使用-
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)

  1. 查看文件大小和文件夹内容
size=os.path.getsize(r"E:\wampserver\_\wampserver")#若地址到最底部则返回文件大小,若到目录则返回目录中所有文件大小
print(size)
file=os.listdir(r"E:\wampserver\_\wampserver")#返回文件夹下所有文件的名称,返回类型为字符串列表,一般这个函数和os.path.join一起用
print(file)
>>>>>['1.txt', 'wampserver3.0.6_x86_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10.exe']
  1. 检查路径的有效性
print(os.path.exists(r"E:\wampserver\_\wampserver"))#path参数所指的文件或文件夹是否存在
print(os.path.isdir(r"E:\wampserver\_\wampserver"))##path参数存在,是否是一个文件夹
print(os.path.isfile(r"E:\wampserver\_\wampserver"))##path参数存在,目录下文件是否存在
  1. 文件读写过程
    读取文件分为三步:
    1.调用oepn()函数,返回一个File对象
    2.调用File对象的read()或write()方法
    3.调用File对象的close()方法,关闭该文件
    用open函数打开一个文件,oepn(“打开文件的地址”,什么方式打开)
    a—追加
    b—二进制
    r—读的方式
    w—写的方式
    读取文件有read()和readline()方法:readline方法读文件中每一行,返回字符串
    写入:
    write(“xxx”)
  2. 用shelve模块保存变量
shelFile=shelve.open("mydata")#将变量保存到二进制的shelf文件中,运行后会产生三个文件  .bak  .dat .dir 
cats=['1','2','3']
shelFile["cats"]=cats
print(shelFile['cats'])
print(list(shelFile.keys()))#将文件中所有键值大于出来
print(list(shelFile.values()))#将文件中所有value值打印出来
#shelve存储和字典相似{'key':'value'}
shelFile.close()
  1. 小练习:
#-*-coding:utf-8 -*-
'''
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):#c创建文件 打乱问题次序
	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())#将所有key选项打乱
	random.shuffle(state)#将题随机排序
	for x in range(50):
		correctAnswer=capitals[state[x]]#获取打乱列表中的值 作为字典的键传入
		wrongAnser=list(capitals.values())#将每个values 转为列表
		del wrongAnser[wrongAnser.index(correctAnswer)]#删除正确答案  list的 index是获取值在列表中的位置
		wrongAnser=random.sample(wrongAnser,3)#在49个字符串列表中随机拿去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()
#-*-coding:utf-8 -*-
'''
本次是 实现多重剪切板
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()
			# print([key_name])
			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"))

#-*-coding:utf-8 -*-
'''
Madlib.py
1.用户读取一个文本文件,替换他们所需要的文件后,再保存。
寻找到yyyyy替换为xxxx
'''
import re
import os
def rele(url,dest_str,repale_str):#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')
		# print(sub)
		file.write(sub)
		file.close()
rele("T1.txt","yyyyy","xxx")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值