自学编程系列——2 文件路径与文本读写
文件路径与文本读写
- 2.1文件路径
- 2.2读写文件
- 2.3 shelve模块:常用
- 2.4 pprint模块:简单数据类型
- 2.5 项目实战
2.1文件路径
- os模块
- 工作空间
- 不同系统不同路径格式
- 绝对路径、相对路径
- 创建新的文件夹
- os.path
- 路径转换
- 文件类型与大小
- 文件是否存在
import os path = os.getcwd()
# 改变工作路径
os.chdir('d:\\vs_code_python\\days_100\\res')
# 连接路径
path1 = os.path.join(path,'正则表达式.inynb')
# 获得电脑上的路径格式
print(path1)
# 绝对路径 d:\\vs_code_python\\days_100\\res
# 相对路径 ../ 上一级 ./同级
# 创建文件夹
# os.makedirs('../exercise')
# os.path模块
# 相对路径和绝对路径的转换
os.path.abspath('.')
os.path.abspath(path1)
os.path.isabs('./')
os.path.relpath('d:\\vs_code_python\\days_100\\exercise\\day_1.py',path1)
# 调用上一级\\exercise即可
# 名字basename和dirname
print(os.path.basename(path1))
print(os.path.dirname(path1))
# 文件大小
print(os.path.getsize(os.path.join(path,'正则表达式.ipynb')))
print(os.listdir(path))
totalsize = 0
for filename in os.listdir(path):totalsize+= os.path.getsize(os.path.join(path,filename))
print(totalsize)
# 该文件夹的字符数
# 检验路径的有效性
print(os.path.exists(path))
print(os.path.isdir(path))
print(os.path.isfile(os.path.join(path,'正则表达式.ipynb')))
2.2读写文件
- 基础知识
- 文本文件
- 二进制文件:颜色、excel等
- 读取文件
-写入文件
# 读取文件:open readlines close
fileA = open(os.path.join(path,'hello.txt'))
content = fileA.readlines()
print(content)
fileA.close()
# 写入文件 覆写
fileB= open(os.path.join(path,'write.txt'),'w')
fileB.write('you are stupid!\n')
# 与print自带换行符不同,写入文件要自己编写换行符
fileB.close()
# 写入文件 添加
fileC = open(os.path.join(path,'write.txt'),'a')
fileC.write('foolish\n')
fileC.write('shut up!\n')
fileC.close()
2.3 shelve模块:常用
- 保存变量为shelve类字典
import shelve
shelfFile = shelve.open('mycats')
cats = ['zhao','qian','sun','li']
shelfFile['cats'] = cats
shelfFile.close()
# 类似一个字典,存储所有变量
shelfFile = shelve.open('mycats')
print(type(shelfFile))
print(shelfFile['cats'])
print(shelfFile.keys())
print(shelfFile.values())
print(list(shelfFile.keys()))
print(list(shelfFile.values()))
2.4 pprint模块:简单数据类型
- 保存字典列表为模块
import pprintcats = [{'name':'zhao','age':'1'},{'name':'qian','age':'2'}]
pprint.pformat(cats)
# 美化字典输出
fileD=open('mycats.py','w')
fileD.write('cats = ' + pprint.pformat(cats) + '\n')
fileD.close()
2.5 项目实战
- 编写试卷
- 将洲及其首府保存到一个字典中
- 根据字典构造50个问题和35份不同的答案,35份不同的试卷,各有35个文件:循环
- 问题顺序随机,对每50个问题构造随机答案,正确选项+三个错误选项(随机),选出后再shuffle一次
- 将问题和答案写入试卷文件同时生成每份试卷的正确答案
- 多重剪切板
# 编写试卷.
import random
# 生成一个字典
capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix', 'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver', 'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee', 'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois': 'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas': 'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine': 'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan': 'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri': 'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada': 'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh', 'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City', 'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence', 'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee': 'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont': 'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
# 生成测试试卷文件和答案文件
for quizNum in range(35): quizFile = open('capitalsquiz%s.txt' % (quizNum + 1), 'a')answerFile = open('capitalsquiz_answers%s.txt' % (quizNum + 1), 'a')# 写入试卷标头quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')quizFile.write((' ' * 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1))quizFile.write('\n\n')# 随机处理洲名states = list(capitals.keys())random.shuffle(states) # 生成问题for questionNum in range(50):correctAnswer = capitals[states[questionNum]] # 每个问题生成四个答案wrongAnswers = list(capitals.values()) # 排除正确答案后筛选3个del wrongAnswers[wrongAnswers.index(correctAnswer)] wrongAnswers = random.sample(wrongAnswers, 3) answerOptions = wrongAnswers + [correctAnswer] # 得到所有选项并且随机排序random.shuffle(answerOptions) # 写入试卷文件quizFile.write('%s. What is the capital of %s?\n' % (questionNum + 1, states[questionNum]))for i in range(4):quizFile.write('%s. %s\n' % ('ABCD'[i], answerOptions[i]))quizFile.write('\n')# 写入答案文件answerFile.write('%s. %s\n' % (questionNum + 1, 'ABCD'[answerOptions.index(correctAnswer)]))quizFile.close()answerFile.close()
# mcb.pyw 保存和加载文本到剪切板
# 用法:py.exe mcb.pyw save argv[1] <keyword>argv[2] 保存剪贴板内容到某个关键字
# 用法:py.exe mcb.pyw <keyword>argv[1] 将某个关键字粘贴到剪贴板
# 用法:py.exe mcb.pyw list argv[1] 所有关键字到剪贴板
# sys读取命令行参数
import sys,shelve,pyperclipmcbshelf = shelve.open('mcb')
if len(sys.argv) == 3 and sys.argv[1].lower() == 'save':mcbshelf[sys.argv[2]] = pyperclip.paste()
elif len(sys.argv) == 2:if sys.argv[1].lower() == 'list':pyperclip.copy(str(list(mcbshelf.keys()))) # 所有关键字被粘贴到剪贴板elif sys.argv[1] in mcbshelf: pyperclip.copy(mcbshelf[sys.argv[1]]) # 如果是关键字,则粘贴到剪贴板
# 列出关键字和加载内容
mcbshelf.close()
命令行操作如下:
PS D:\vs_code_python\days_100\res> py clip.pyw save 铭志
PS D:\vs_code_python\days_100\res> py clip.pyw save 刘
PS D:\vs_code_python\days_100\res> py clip.pyw save 红
PS D:\vs_code_python\days_100\res> py clip.pyw save 王
PS D:\vs_code_python\days_100\res> py clip.pyw save 道
PS D:\vs_code_python\days_100\res> py clip.pyw list
PS D:\vs_code_python\days_100\res> py clip.pyw 铭志
PS D:\vs_code_python\days_100\res> py clip.pyw 刘
PS D:\vs_code_python\days_100\res> py clip.pyw 王
结果粘贴到文本中:铭志,囚封天之道,众生需渡无量劫,离开深狱一执念,奉至修真行 铭志,众生亦于无量前,解今...
小兄弟,我看你天庭饱满。紫光透体绝非凡人啊!可惜若无人指点。怕此生婴变无望望
有一种人,天生就是为了战而生;天生就是为了杀戮而存在,天生就是为了逆天而行。王林就是这样
——《仙逆》 耳根
自学编程系列——2 文件路径与文本读写相关推荐
- 学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)
原文:学习ASP.NET Core Razor 编程系列十三--文件上传功能(一) 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习A ...
- Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码
Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码 目录 文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码
- 自学编程系列——3 面向对象编程
面向对象编程 3.1 什么是面向对象编程 3.2 访问可见性问题 3.3 装饰器property 3.4 继承和多态 3.5 三个案例 3.1 什么是面向对象编程 把一组数据结构和处理它们的方法组成( ...
- linux c文件路径,LINUX C编程中的文件路径
你在你的代码有很多的问题, ##define NUMBER arg /* ^^^^^^^^^^^^^^^^^^^ what is this define? */ void *odczyt(void*a ...
- 自学编程系列——5 pandas入门
pandas的学习 5.1 Series数据 5.2 DataFrame创建 总结: 创建方法 5.3 索引对象 5.4 pandas基本功能 5.5 描述性统计 import numpy as np ...
- 自学编程系列——4 Numpy数组
numpy的学习 4.1 notebook的使用 4.2 numpy基础知识 4.3 numpy的索引和切片 4.4 numpy的基本运算 4.5 numpy的数据处理 4.6 numpy线性代数 4 ...
- python编程读写文件内容_Python编程中对文件和存储器的读写示例
#!/usr/bin/python # -*- coding: utf-8 -*- # Filename: using_file.py # 文件是创建和读取 s = '''''我们都是木头人, 不许说 ...
- 学习ASP.NET Core Razor 编程系列十八——并发解决方案
原文:学习ASP.NET Core Razor 编程系列十八--并发解决方案 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP. ...
- java读取src xml文件路径_Java获取路径方法相对路径读取xml文件方法
(1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...
最新文章
- JavaScript两个变量交换值(不使用临时变量)
- Altium Designer旋转PCB、PCB中绕某点旋转
- error: declaration of 'cv::Mat R ' shadows a parameter
- 面试题整理 2:求链表倒数第 k 个结点
- 面向对象的经验原则小结
- html网页显示时中文乱码
- WampServer 给电脑搭建apache服务器和php环境
- android 个人标准身高计算器,Android开发:标准身高计算器应用的…
- Java开发的文字RPG游戏,代码开源
- matlab直方图均衡化实现
- u盘怎么装服务器系统教程,u盘装服务器系统教程
- 台式机计算机在哪里看,IT教程:台式电脑主板型号在哪里看
- 产品分析中如何去做用户调研
- android自定义相机打开闪光灯,Android 照相机(闪光灯,切换摄像头)
- 国产化服务器安装Mysql数据库
- SQL语句中EXISTS的使用详解及示例
- windows 服务程序和桌面程序集成(一)
- el-table滚动条被挡住的问题
- Vscode批量处理
- memcpy函数是怎么样实现的
热门文章
- 大漠多线程循环任务自动切换模板判断账号登陆成功
- Python爬虫实战(1):抓取毒舌电影最新推送
- revit翻模中需要绘制路径和边界的构件(楼板,屋顶)怎么做不出错?
- 在家上用宽带IPv6网站,下载六维,IPv4 to IPv6
- Xamarin.Forms 之我的花园 - 2.从照片库选择图片和拍照功能
- 错宗复杂的进程标识PID
- 官方scratch3.0正式发布,全面支持移动设备在线编程!
- 极速办公(PPT)如何修改文字为斜体
- 屏幕适配遇到P30 的坑
- 多机器人路径规划CBS/ECBS等 libmultiRobotPlanning 代码阅读笔记